diff options
| author | 2020-06-03 13:39:42 -0400 | |
|---|---|---|
| committer | 2020-06-03 18:39:42 +0100 | |
| commit | 0f47403d0220757fed189b76e2071e25b1025cb8 (patch) | |
| tree | 879bf72c4476f0a5e0d82da99d7ff2b2276bcaca | |
| parent | Fix search dialog hanging for a short time sometimes (#250) (diff) | |
| download | enigma-fork-0f47403d0220757fed189b76e2071e25b1025cb8.tar.gz enigma-fork-0f47403d0220757fed189b76e2071e25b1025cb8.tar.xz enigma-fork-0f47403d0220757fed189b76e2071e25b1025cb8.zip | |
Split GUI code to separate module (#242)
* Split into modules
* Post merge compile fixes
Co-authored-by: modmuss50 <modmuss50@gmail.com>
| -rw-r--r-- | .gitignore | 246 | ||||
| -rw-r--r-- | README.md | 4 | ||||
| -rw-r--r-- | build.gradle | 174 | ||||
| -rw-r--r-- | enigma-cli/build.gradle | 5 | ||||
| -rw-r--r-- | enigma-cli/src/main/java/cuchaz/enigma/command/CheckMappingsCommand.java (renamed from src/main/java/cuchaz/enigma/command/CheckMappingsCommand.java) | 2 | ||||
| -rw-r--r-- | enigma-cli/src/main/java/cuchaz/enigma/command/Command.java (renamed from src/main/java/cuchaz/enigma/command/Command.java) | 2 | ||||
| -rw-r--r-- | enigma-cli/src/main/java/cuchaz/enigma/command/ComposeMappingsCommand.java (renamed from src/main/java/cuchaz/enigma/command/ComposeMappingsCommand.java) | 9 | ||||
| -rw-r--r-- | enigma-cli/src/main/java/cuchaz/enigma/command/ConvertMappingsCommand.java (renamed from src/main/java/cuchaz/enigma/command/ConvertMappingsCommand.java) | 6 | ||||
| -rw-r--r-- | enigma-cli/src/main/java/cuchaz/enigma/command/DecompileCommand.java (renamed from src/main/java/cuchaz/enigma/command/DecompileCommand.java) | 0 | ||||
| -rw-r--r-- | enigma-cli/src/main/java/cuchaz/enigma/command/DeobfuscateCommand.java (renamed from src/main/java/cuchaz/enigma/command/DeobfuscateCommand.java) | 0 | ||||
| -rw-r--r-- | enigma-cli/src/main/java/cuchaz/enigma/command/InvertMappingsCommand.java (renamed from src/main/java/cuchaz/enigma/command/InvertMappingsCommand.java) | 9 | ||||
| -rw-r--r-- | enigma-cli/src/main/java/cuchaz/enigma/command/Main.java (renamed from src/main/java/cuchaz/enigma/CommandMain.java) | 12 | ||||
| -rw-r--r-- | enigma-cli/src/main/java/cuchaz/enigma/command/MapSpecializedMethodsCommand.java (renamed from src/main/java/cuchaz/enigma/command/MapSpecializedMethodsCommand.java) | 4 | ||||
| -rw-r--r-- | enigma-cli/src/main/java/cuchaz/enigma/command/MappingCommandsUtil.java | 87 | ||||
| -rw-r--r-- | enigma-cli/src/test/java/cuchaz/enigma/command/CheckMappingsCommandTest.java (renamed from src/test/java/cuchaz/enigma/command/CheckMappingsCommandTest.java) | 5 | ||||
| -rw-r--r-- | enigma-cli/src/test/resources/packageAccess/correctMappings/base/Base.mapping (renamed from src/test/resources/packageAccess/correctMappings/base/Base.mapping) | 0 | ||||
| -rw-r--r-- | enigma-cli/src/test/resources/packageAccess/correctMappings/base/One.mapping (renamed from src/test/resources/packageAccess/correctMappings/base/One.mapping) | 0 | ||||
| -rw-r--r-- | enigma-cli/src/test/resources/packageAccess/correctMappings/two/Two.mapping (renamed from src/test/resources/packageAccess/correctMappings/two/Two.mapping) | 0 | ||||
| -rw-r--r-- | enigma-cli/src/test/resources/packageAccess/wrongMappings/base/Base.mapping (renamed from src/test/resources/packageAccess/wrongMappings/base/Base.mapping) | 0 | ||||
| -rw-r--r-- | enigma-cli/src/test/resources/packageAccess/wrongMappings/one/One.mapping (renamed from src/test/resources/packageAccess/wrongMappings/one/One.mapping) | 0 | ||||
| -rw-r--r-- | enigma-cli/src/test/resources/packageAccess/wrongMappings/two/Two.mapping (renamed from src/test/resources/packageAccess/wrongMappings/two/Two.mapping) | 0 | ||||
| -rw-r--r-- | enigma-server/build.gradle | 6 | ||||
| -rw-r--r-- | enigma-server/docs/protocol.md (renamed from docs/protocol.md) | 0 | ||||
| -rw-r--r-- | enigma-server/src/main/java/cuchaz/enigma/network/ClientPacketHandler.java | 29 | ||||
| -rw-r--r-- | enigma-server/src/main/java/cuchaz/enigma/network/DedicatedEnigmaServer.java (renamed from src/main/java/cuchaz/enigma/network/DedicatedEnigmaServer.java) | 46 | ||||
| -rw-r--r-- | enigma-server/src/main/java/cuchaz/enigma/network/EnigmaClient.java (renamed from src/main/java/cuchaz/enigma/network/EnigmaClient.java) | 17 | ||||
| -rw-r--r-- | enigma-server/src/main/java/cuchaz/enigma/network/EnigmaServer.java (renamed from src/main/java/cuchaz/enigma/network/EnigmaServer.java) | 8 | ||||
| -rw-r--r-- | enigma-server/src/main/java/cuchaz/enigma/network/IntegratedEnigmaServer.java (renamed from src/main/java/cuchaz/enigma/network/IntegratedEnigmaServer.java) | 0 | ||||
| -rw-r--r-- | enigma-server/src/main/java/cuchaz/enigma/network/Message.java (renamed from src/main/java/cuchaz/enigma/utils/Message.java) | 3 | ||||
| -rw-r--r-- | enigma-server/src/main/java/cuchaz/enigma/network/ServerPacketHandler.java (renamed from src/main/java/cuchaz/enigma/network/ServerPacketHandler.java) | 0 | ||||
| -rw-r--r-- | enigma-server/src/main/java/cuchaz/enigma/network/packet/ChangeDocsC2SPacket.java (renamed from src/main/java/cuchaz/enigma/network/packet/ChangeDocsC2SPacket.java) | 4 | ||||
| -rw-r--r-- | enigma-server/src/main/java/cuchaz/enigma/network/packet/ChangeDocsS2CPacket.java (renamed from src/main/java/cuchaz/enigma/network/packet/ChangeDocsS2CPacket.java) | 6 | ||||
| -rw-r--r-- | enigma-server/src/main/java/cuchaz/enigma/network/packet/ConfirmChangeC2SPacket.java (renamed from src/main/java/cuchaz/enigma/network/packet/ConfirmChangeC2SPacket.java) | 0 | ||||
| -rw-r--r-- | enigma-server/src/main/java/cuchaz/enigma/network/packet/KickS2CPacket.java (renamed from src/main/java/cuchaz/enigma/network/packet/KickS2CPacket.java) | 6 | ||||
| -rw-r--r-- | enigma-server/src/main/java/cuchaz/enigma/network/packet/LoginC2SPacket.java (renamed from src/main/java/cuchaz/enigma/network/packet/LoginC2SPacket.java) | 2 | ||||
| -rw-r--r-- | enigma-server/src/main/java/cuchaz/enigma/network/packet/MarkDeobfuscatedC2SPacket.java (renamed from src/main/java/cuchaz/enigma/network/packet/MarkDeobfuscatedC2SPacket.java) | 2 | ||||
| -rw-r--r-- | enigma-server/src/main/java/cuchaz/enigma/network/packet/MarkDeobfuscatedS2CPacket.java (renamed from src/main/java/cuchaz/enigma/network/packet/MarkDeobfuscatedS2CPacket.java) | 6 | ||||
| -rw-r--r-- | enigma-server/src/main/java/cuchaz/enigma/network/packet/MessageC2SPacket.java (renamed from src/main/java/cuchaz/enigma/network/packet/MessageC2SPacket.java) | 2 | ||||
| -rw-r--r-- | enigma-server/src/main/java/cuchaz/enigma/network/packet/MessageS2CPacket.java (renamed from src/main/java/cuchaz/enigma/network/packet/MessageS2CPacket.java) | 8 | ||||
| -rw-r--r-- | enigma-server/src/main/java/cuchaz/enigma/network/packet/Packet.java (renamed from src/main/java/cuchaz/enigma/network/packet/Packet.java) | 0 | ||||
| -rw-r--r-- | enigma-server/src/main/java/cuchaz/enigma/network/packet/PacketHelper.java (renamed from src/main/java/cuchaz/enigma/network/packet/PacketHelper.java) | 0 | ||||
| -rw-r--r-- | enigma-server/src/main/java/cuchaz/enigma/network/packet/PacketRegistry.java (renamed from src/main/java/cuchaz/enigma/network/packet/PacketRegistry.java) | 14 | ||||
| -rw-r--r-- | enigma-server/src/main/java/cuchaz/enigma/network/packet/RemoveMappingC2SPacket.java (renamed from src/main/java/cuchaz/enigma/network/packet/RemoveMappingC2SPacket.java) | 4 | ||||
| -rw-r--r-- | enigma-server/src/main/java/cuchaz/enigma/network/packet/RemoveMappingS2CPacket.java (renamed from src/main/java/cuchaz/enigma/network/packet/RemoveMappingS2CPacket.java) | 6 | ||||
| -rw-r--r-- | enigma-server/src/main/java/cuchaz/enigma/network/packet/RenameC2SPacket.java (renamed from src/main/java/cuchaz/enigma/network/packet/RenameC2SPacket.java) | 4 | ||||
| -rw-r--r-- | enigma-server/src/main/java/cuchaz/enigma/network/packet/RenameS2CPacket.java (renamed from src/main/java/cuchaz/enigma/network/packet/RenameS2CPacket.java) | 6 | ||||
| -rw-r--r-- | enigma-server/src/main/java/cuchaz/enigma/network/packet/SyncMappingsS2CPacket.java (renamed from src/main/java/cuchaz/enigma/network/packet/SyncMappingsS2CPacket.java) | 8 | ||||
| -rw-r--r-- | enigma-server/src/main/java/cuchaz/enigma/network/packet/UserListS2CPacket.java (renamed from src/main/java/cuchaz/enigma/network/packet/UserListS2CPacket.java) | 8 | ||||
| -rw-r--r-- | enigma-swing/build.gradle | 23 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/BrowserCaret.java (renamed from src/main/java/cuchaz/enigma/gui/BrowserCaret.java) | 0 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/ClassSelector.java (renamed from src/main/java/cuchaz/enigma/gui/ClassSelector.java) | 2 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/CodeReader.java (renamed from src/main/java/cuchaz/enigma/gui/CodeReader.java) | 2 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/ConnectionState.java (renamed from src/main/java/cuchaz/enigma/gui/ConnectionState.java) | 0 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/DecompiledClassSource.java (renamed from src/main/java/cuchaz/enigma/gui/DecompiledClassSource.java) | 3 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/EnigmaQuickFindDialog.java (renamed from src/main/java/cuchaz/enigma/gui/EnigmaQuickFindDialog.java) | 0 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/EnigmaSyntaxKit.java (renamed from src/main/java/cuchaz/enigma/gui/EnigmaSyntaxKit.java) | 2 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/ExceptionIgnorer.java (renamed from src/main/java/cuchaz/enigma/ExceptionIgnorer.java) | 2 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/Gui.java (renamed from src/main/java/cuchaz/enigma/gui/Gui.java) | 28 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java (renamed from src/main/java/cuchaz/enigma/gui/GuiController.java) | 50 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/Main.java (renamed from src/main/java/cuchaz/enigma/Main.java) | 8 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/MessageListCellRenderer.java (renamed from src/main/java/cuchaz/enigma/gui/MessageListCellRenderer.java) | 2 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/MethodTreeCellRenderer.java (renamed from src/main/java/cuchaz/enigma/gui/MethodTreeCellRenderer.java) | 2 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/QuickFindAction.java (renamed from src/main/java/cuchaz/enigma/gui/QuickFindAction.java) | 0 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/ReadableToken.java (renamed from src/main/java/cuchaz/enigma/utils/ReadableToken.java) | 2 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/RefreshMode.java (renamed from src/main/java/cuchaz/enigma/gui/RefreshMode.java) | 0 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/TokenListCellRenderer.java (renamed from src/main/java/cuchaz/enigma/gui/TokenListCellRenderer.java) | 2 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/config/Config.java (renamed from src/main/java/cuchaz/enigma/config/Config.java) | 2 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/config/Themes.java (renamed from src/main/java/cuchaz/enigma/config/Themes.java) | 5 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/AboutDialog.java (renamed from src/main/java/cuchaz/enigma/gui/dialog/AboutDialog.java) | 11 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/ChangeDialog.java (renamed from src/main/java/cuchaz/enigma/gui/dialog/ChangeDialog.java) | 0 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/ConnectToServerDialog.java (renamed from src/main/java/cuchaz/enigma/gui/dialog/ConnectToServerDialog.java) | 0 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/CrashDialog.java (renamed from src/main/java/cuchaz/enigma/gui/dialog/CrashDialog.java) | 10 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/CreateServerDialog.java (renamed from src/main/java/cuchaz/enigma/gui/dialog/CreateServerDialog.java) | 0 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/JavadocDialog.java (renamed from src/main/java/cuchaz/enigma/gui/dialog/JavadocDialog.java) | 4 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/ProgressDialog.java (renamed from src/main/java/cuchaz/enigma/gui/dialog/ProgressDialog.java) | 8 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/SearchDialog.java (renamed from src/main/java/cuchaz/enigma/gui/dialog/SearchDialog.java) | 4 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/StatsDialog.java (renamed from src/main/java/cuchaz/enigma/gui/dialog/StatsDialog.java) | 0 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/elements/CollapsibleTabbedPane.java (renamed from src/main/java/cuchaz/enigma/gui/elements/CollapsibleTabbedPane.java) | 0 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java (renamed from src/main/java/cuchaz/enigma/gui/elements/MenuBar.java) | 4 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/elements/PopupMenuBar.java (renamed from src/main/java/cuchaz/enigma/gui/elements/PopupMenuBar.java) | 0 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/filechooser/FileChooserAny.java (renamed from src/main/java/cuchaz/enigma/gui/filechooser/FileChooserAny.java) | 0 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/filechooser/FileChooserFile.java (renamed from src/main/java/cuchaz/enigma/gui/filechooser/FileChooserFile.java) | 0 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/filechooser/FileChooserFolder.java (renamed from src/main/java/cuchaz/enigma/gui/filechooser/FileChooserFolder.java) | 0 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/highlight/BoxHighlightPainter.java (renamed from src/main/java/cuchaz/enigma/gui/highlight/BoxHighlightPainter.java) | 2 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/highlight/SelectionHighlightPainter.java (renamed from src/main/java/cuchaz/enigma/gui/highlight/SelectionHighlightPainter.java) | 2 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/highlight/TokenHighlightType.java (renamed from src/main/java/cuchaz/enigma/gui/highlight/TokenHighlightType.java) | 0 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/node/ClassSelectorClassNode.java (renamed from src/main/java/cuchaz/enigma/gui/node/ClassSelectorClassNode.java) | 0 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/node/ClassSelectorPackageNode.java (renamed from src/main/java/cuchaz/enigma/gui/node/ClassSelectorPackageNode.java) | 0 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/panels/PanelDeobf.java (renamed from src/main/java/cuchaz/enigma/gui/panels/PanelDeobf.java) | 0 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/panels/PanelEditor.java (renamed from src/main/java/cuchaz/enigma/gui/panels/PanelEditor.java) | 2 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/panels/PanelIdentifier.java (renamed from src/main/java/cuchaz/enigma/gui/panels/PanelIdentifier.java) | 4 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/panels/PanelObf.java (renamed from src/main/java/cuchaz/enigma/gui/panels/PanelObf.java) | 0 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/search/SearchEntry.java (renamed from src/main/java/cuchaz/enigma/utils/search/SearchEntry.java) | 2 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/search/SearchUtil.java (renamed from src/main/java/cuchaz/enigma/utils/search/SearchUtil.java) | 2 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/stats/StatsGenerator.java (renamed from src/main/java/cuchaz/enigma/gui/stats/StatsGenerator.java) | 2 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/stats/StatsMember.java (renamed from src/main/java/cuchaz/enigma/gui/stats/StatsMember.java) | 0 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/util/AbstractListCellRenderer.java (renamed from src/main/java/cuchaz/enigma/gui/util/AbstractListCellRenderer.java) | 0 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/util/GuiUtil.java | 56 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/util/History.java (renamed from src/main/java/cuchaz/enigma/gui/util/History.java) | 98 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/util/ScaleChangeListener.java (renamed from src/main/java/cuchaz/enigma/gui/util/ScaleChangeListener.java) | 0 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/util/ScaleUtil.java (renamed from src/main/java/cuchaz/enigma/gui/util/ScaleUtil.java) | 2 | ||||
| -rw-r--r-- | enigma-swing/src/main/resources/about.html (renamed from src/main/resources/about.html) | 0 | ||||
| -rw-r--r-- | enigma-swing/src/main/resources/stats.html (renamed from src/main/resources/stats.html) | 0 | ||||
| -rw-r--r-- | enigma/build.gradle | 63 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/ClassProvider.java (renamed from src/main/java/cuchaz/enigma/ClassProvider.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/Enigma.java (renamed from src/main/java/cuchaz/enigma/Enigma.java) | 20 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/EnigmaProfile.java (renamed from src/main/java/cuchaz/enigma/EnigmaProfile.java) | 6 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/EnigmaProject.java (renamed from src/main/java/cuchaz/enigma/EnigmaProject.java) | 22 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/EnigmaServices.java (renamed from src/main/java/cuchaz/enigma/EnigmaServices.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/ProgressListener.java (renamed from src/main/java/cuchaz/enigma/ProgressListener.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/analysis/Access.java (renamed from src/main/java/cuchaz/enigma/analysis/Access.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/analysis/BuiltinPlugin.java (renamed from src/main/java/cuchaz/enigma/analysis/BuiltinPlugin.java) | 5 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/analysis/ClassCache.java (renamed from src/main/java/cuchaz/enigma/analysis/ClassCache.java) | 5 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/analysis/ClassImplementationsTreeNode.java (renamed from src/main/java/cuchaz/enigma/analysis/ClassImplementationsTreeNode.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/analysis/ClassInheritanceTreeNode.java (renamed from src/main/java/cuchaz/enigma/analysis/ClassInheritanceTreeNode.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/analysis/ClassReferenceTreeNode.java (renamed from src/main/java/cuchaz/enigma/analysis/ClassReferenceTreeNode.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/analysis/EntryReference.java (renamed from src/main/java/cuchaz/enigma/analysis/EntryReference.java) | 4 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/analysis/FieldReferenceTreeNode.java (renamed from src/main/java/cuchaz/enigma/analysis/FieldReferenceTreeNode.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/analysis/IndexSimpleVerifier.java (renamed from src/main/java/cuchaz/enigma/analysis/IndexSimpleVerifier.java) | 4 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/analysis/IndexTreeBuilder.java (renamed from src/main/java/cuchaz/enigma/analysis/IndexTreeBuilder.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/analysis/InterpreterPair.java (renamed from src/main/java/cuchaz/enigma/analysis/InterpreterPair.java) | 5 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/analysis/MethodImplementationsTreeNode.java (renamed from src/main/java/cuchaz/enigma/analysis/MethodImplementationsTreeNode.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/analysis/MethodInheritanceTreeNode.java (renamed from src/main/java/cuchaz/enigma/analysis/MethodInheritanceTreeNode.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/analysis/MethodNodeWithAction.java (renamed from src/main/java/cuchaz/enigma/analysis/MethodNodeWithAction.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/analysis/MethodReferenceTreeNode.java (renamed from src/main/java/cuchaz/enigma/analysis/MethodReferenceTreeNode.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/analysis/ReferenceTargetType.java (renamed from src/main/java/cuchaz/enigma/analysis/ReferenceTargetType.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/analysis/ReferenceTreeNode.java (renamed from src/main/java/cuchaz/enigma/analysis/ReferenceTreeNode.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/analysis/index/BridgeMethodIndex.java (renamed from src/main/java/cuchaz/enigma/analysis/index/BridgeMethodIndex.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/analysis/index/EntryIndex.java (renamed from src/main/java/cuchaz/enigma/analysis/index/EntryIndex.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/analysis/index/IndexClassVisitor.java (renamed from src/main/java/cuchaz/enigma/analysis/index/IndexClassVisitor.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/analysis/index/IndexReferenceVisitor.java (renamed from src/main/java/cuchaz/enigma/analysis/index/IndexReferenceVisitor.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/analysis/index/InheritanceIndex.java (renamed from src/main/java/cuchaz/enigma/analysis/index/InheritanceIndex.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/analysis/index/JarIndex.java (renamed from src/main/java/cuchaz/enigma/analysis/index/JarIndex.java) | 7 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/analysis/index/JarIndexer.java (renamed from src/main/java/cuchaz/enigma/analysis/index/JarIndexer.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/analysis/index/PackageVisibilityIndex.java (renamed from src/main/java/cuchaz/enigma/analysis/index/PackageVisibilityIndex.java) | 294 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/analysis/index/ReferenceIndex.java (renamed from src/main/java/cuchaz/enigma/analysis/index/ReferenceIndex.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/api/EnigmaPlugin.java (renamed from src/main/java/cuchaz/enigma/api/EnigmaPlugin.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/api/EnigmaPluginContext.java (renamed from src/main/java/cuchaz/enigma/api/EnigmaPluginContext.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/api/service/EnigmaService.java (renamed from src/main/java/cuchaz/enigma/api/service/EnigmaService.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/api/service/EnigmaServiceContext.java (renamed from src/main/java/cuchaz/enigma/api/service/EnigmaServiceContext.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/api/service/EnigmaServiceFactory.java (renamed from src/main/java/cuchaz/enigma/api/service/EnigmaServiceFactory.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/api/service/EnigmaServiceType.java (renamed from src/main/java/cuchaz/enigma/api/service/EnigmaServiceType.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/api/service/JarIndexerService.java (renamed from src/main/java/cuchaz/enigma/api/service/JarIndexerService.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/api/service/NameProposalService.java (renamed from src/main/java/cuchaz/enigma/api/service/NameProposalService.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/api/service/ObfuscationTestService.java (renamed from src/main/java/cuchaz/enigma/api/service/ObfuscationTestService.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/bytecode/translators/AsmObjectTranslator.java (renamed from src/main/java/cuchaz/enigma/bytecode/translators/AsmObjectTranslator.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/bytecode/translators/LocalVariableFixVisitor.java (renamed from src/main/java/cuchaz/enigma/bytecode/translators/LocalVariableFixVisitor.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/bytecode/translators/SourceFixVisitor.java (renamed from src/main/java/cuchaz/enigma/bytecode/translators/SourceFixVisitor.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/bytecode/translators/TranslationAnnotationVisitor.java (renamed from src/main/java/cuchaz/enigma/bytecode/translators/TranslationAnnotationVisitor.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/bytecode/translators/TranslationClassVisitor.java (renamed from src/main/java/cuchaz/enigma/bytecode/translators/TranslationClassVisitor.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/bytecode/translators/TranslationFieldVisitor.java (renamed from src/main/java/cuchaz/enigma/bytecode/translators/TranslationFieldVisitor.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/bytecode/translators/TranslationMethodVisitor.java (renamed from src/main/java/cuchaz/enigma/bytecode/translators/TranslationMethodVisitor.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/bytecode/translators/TranslationSignatureVisitor.java (renamed from src/main/java/cuchaz/enigma/bytecode/translators/TranslationSignatureVisitor.java) | 4 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/source/Decompiler.java (renamed from src/main/java/cuchaz/enigma/source/Decompiler.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/source/DecompilerService.java (renamed from src/main/java/cuchaz/enigma/source/DecompilerService.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/source/Decompilers.java (renamed from src/main/java/cuchaz/enigma/source/Decompilers.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/source/Source.java (renamed from src/main/java/cuchaz/enigma/source/Source.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/source/SourceIndex.java (renamed from src/main/java/cuchaz/enigma/source/SourceIndex.java) | 2 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/source/SourceRemapper.java (renamed from src/main/java/cuchaz/enigma/gui/SourceRemapper.java) | 4 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/source/SourceSettings.java (renamed from src/main/java/cuchaz/enigma/source/SourceSettings.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/source/Token.java (renamed from src/main/java/cuchaz/enigma/analysis/Token.java) | 2 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/source/cfr/CfrDecompiler.java (renamed from src/main/java/cuchaz/enigma/source/cfr/CfrDecompiler.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/source/cfr/CfrSource.java (renamed from src/main/java/cuchaz/enigma/source/cfr/CfrSource.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/source/cfr/EnigmaDumper.java (renamed from src/main/java/cuchaz/enigma/source/cfr/EnigmaDumper.java) | 2 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/source/procyon/EntryParser.java (renamed from src/main/java/cuchaz/enigma/source/procyon/EntryParser.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/source/procyon/ProcyonDecompiler.java (renamed from src/main/java/cuchaz/enigma/source/procyon/ProcyonDecompiler.java) | 17 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/source/procyon/ProcyonSource.java (renamed from src/main/java/cuchaz/enigma/source/procyon/ProcyonSource.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/source/procyon/index/SourceIndexClassVisitor.java (renamed from src/main/java/cuchaz/enigma/source/procyon/index/SourceIndexClassVisitor.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/source/procyon/index/SourceIndexMethodVisitor.java (renamed from src/main/java/cuchaz/enigma/source/procyon/index/SourceIndexMethodVisitor.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/source/procyon/index/SourceIndexVisitor.java (renamed from src/main/java/cuchaz/enigma/source/procyon/index/SourceIndexVisitor.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/source/procyon/index/TokenFactory.java (renamed from src/main/java/cuchaz/enigma/source/procyon/index/TokenFactory.java) | 2 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/source/procyon/transformers/AddJavadocsAstTransform.java (renamed from src/main/java/cuchaz/enigma/source/procyon/transformers/AddJavadocsAstTransform.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/source/procyon/transformers/DropImportAstTransform.java (renamed from src/main/java/cuchaz/enigma/source/procyon/transformers/DropImportAstTransform.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/source/procyon/transformers/DropVarModifiersAstTransform.java (renamed from src/main/java/cuchaz/enigma/source/procyon/transformers/DropVarModifiersAstTransform.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/source/procyon/transformers/InvalidIdentifierFix.java (renamed from src/main/java/cuchaz/enigma/source/procyon/transformers/InvalidIdentifierFix.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/source/procyon/transformers/Java8Generics.java (renamed from src/main/java/cuchaz/enigma/source/procyon/transformers/Java8Generics.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/source/procyon/transformers/ObfuscatedEnumSwitchRewriterTransform.java (renamed from src/main/java/cuchaz/enigma/source/procyon/transformers/ObfuscatedEnumSwitchRewriterTransform.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/source/procyon/transformers/RemoveObjectCasts.java (renamed from src/main/java/cuchaz/enigma/source/procyon/transformers/RemoveObjectCasts.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/source/procyon/transformers/VarargsFixer.java (renamed from src/main/java/cuchaz/enigma/source/procyon/transformers/VarargsFixer.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/source/procyon/typeloader/CachingClasspathTypeLoader.java (renamed from src/main/java/cuchaz/enigma/source/procyon/typeloader/CachingClasspathTypeLoader.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/source/procyon/typeloader/CachingTypeLoader.java (renamed from src/main/java/cuchaz/enigma/source/procyon/typeloader/CachingTypeLoader.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/source/procyon/typeloader/CompiledSourceTypeLoader.java (renamed from src/main/java/cuchaz/enigma/source/procyon/typeloader/CompiledSourceTypeLoader.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/source/procyon/typeloader/NoRetryMetadataSystem.java (renamed from src/main/java/cuchaz/enigma/source/procyon/typeloader/NoRetryMetadataSystem.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/source/procyon/typeloader/SynchronizedTypeLoader.java (renamed from src/main/java/cuchaz/enigma/source/procyon/typeloader/SynchronizedTypeLoader.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/LocalNameGenerator.java (renamed from src/main/java/cuchaz/enigma/translation/LocalNameGenerator.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/MappingTranslator.java (renamed from src/main/java/cuchaz/enigma/translation/MappingTranslator.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/ProposingTranslator.java (renamed from src/main/java/cuchaz/enigma/ProposingTranslator.java) | 4 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/SignatureUpdater.java (renamed from src/main/java/cuchaz/enigma/translation/SignatureUpdater.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/Translatable.java (renamed from src/main/java/cuchaz/enigma/translation/Translatable.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/TranslationDirection.java (renamed from src/main/java/cuchaz/enigma/translation/TranslationDirection.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/Translator.java (renamed from src/main/java/cuchaz/enigma/translation/Translator.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/VoidTranslator.java (renamed from src/main/java/cuchaz/enigma/translation/VoidTranslator.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/AccessModifier.java (renamed from src/main/java/cuchaz/enigma/translation/mapping/AccessModifier.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/EntryMap.java (renamed from src/main/java/cuchaz/enigma/translation/mapping/EntryMap.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/EntryMapping.java (renamed from src/main/java/cuchaz/enigma/translation/mapping/EntryMapping.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/EntryRemapper.java (renamed from src/main/java/cuchaz/enigma/translation/mapping/EntryRemapper.java) | 1 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/EntryResolver.java (renamed from src/main/java/cuchaz/enigma/translation/mapping/EntryResolver.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/IllegalNameException.java (renamed from src/main/java/cuchaz/enigma/throwables/IllegalNameException.java) | 2 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/IndexEntryResolver.java (renamed from src/main/java/cuchaz/enigma/translation/mapping/IndexEntryResolver.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/MappingDelta.java (renamed from src/main/java/cuchaz/enigma/translation/mapping/MappingDelta.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/MappingOperations.java | 71 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/MappingPair.java (renamed from src/main/java/cuchaz/enigma/translation/mapping/MappingPair.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/MappingValidator.java (renamed from src/main/java/cuchaz/enigma/translation/mapping/MappingValidator.java) | 1 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/MappingsChecker.java (renamed from src/main/java/cuchaz/enigma/translation/mapping/MappingsChecker.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/NameValidator.java (renamed from src/main/java/cuchaz/enigma/translation/mapping/NameValidator.java) | 3 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/ResolutionStrategy.java (renamed from src/main/java/cuchaz/enigma/translation/mapping/ResolutionStrategy.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/VoidEntryResolver.java (renamed from src/main/java/cuchaz/enigma/translation/mapping/VoidEntryResolver.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/LfPrintWriter.java | 16 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingFileNameFormat.java (renamed from src/main/java/cuchaz/enigma/translation/mapping/MappingFileNameFormat.java) | 2 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingFormat.java (renamed from src/main/java/cuchaz/enigma/translation/mapping/serde/MappingFormat.java) | 10 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingHelper.java (renamed from src/main/java/cuchaz/enigma/translation/mapping/serde/MappingHelper.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingParseException.java (renamed from src/main/java/cuchaz/enigma/throwables/MappingParseException.java) | 2 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingSaveParameters.java (renamed from src/main/java/cuchaz/enigma/translation/mapping/MappingSaveParameters.java) | 2 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingsReader.java (renamed from src/main/java/cuchaz/enigma/translation/mapping/serde/MappingsReader.java) | 2 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingsWriter.java (renamed from src/main/java/cuchaz/enigma/translation/mapping/serde/MappingsWriter.java) | 1 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/RawEntryMapping.java (renamed from src/main/java/cuchaz/enigma/translation/mapping/serde/RawEntryMapping.java) | 10 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaFormat.java (renamed from src/main/java/cuchaz/enigma/translation/mapping/serde/EnigmaFormat.java) | 2 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaMappingsReader.java (renamed from src/main/java/cuchaz/enigma/translation/mapping/serde/EnigmaMappingsReader.java) | 9 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaMappingsWriter.java (renamed from src/main/java/cuchaz/enigma/translation/mapping/serde/EnigmaMappingsWriter.java) | 14 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/proguard/ProguardMappingsReader.java (renamed from src/main/java/cuchaz/enigma/translation/mapping/serde/ProguardMappingsReader.java) | 11 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/srg/SrgMappingsWriter.java (renamed from src/main/java/cuchaz/enigma/translation/mapping/serde/SrgMappingsWriter.java) | 9 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/tiny/TinyMappingsReader.java (renamed from src/main/java/cuchaz/enigma/translation/mapping/serde/TinyMappingsReader.java) | 7 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/tiny/TinyMappingsWriter.java (renamed from src/main/java/cuchaz/enigma/translation/mapping/serde/TinyMappingsWriter.java) | 5 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/tinyv2/TinyV2Reader.java (renamed from src/main/java/cuchaz/enigma/translation/mapping/serde/TinyV2Reader.java) | 13 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/tinyv2/TinyV2Writer.java (renamed from src/main/java/cuchaz/enigma/translation/mapping/serde/TinyV2Writer.java) | 11 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/tree/DeltaTrackingTree.java (renamed from src/main/java/cuchaz/enigma/translation/mapping/tree/DeltaTrackingTree.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/tree/EntryTree.java (renamed from src/main/java/cuchaz/enigma/translation/mapping/tree/EntryTree.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/tree/EntryTreeNode.java (renamed from src/main/java/cuchaz/enigma/translation/mapping/tree/EntryTreeNode.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/tree/HashEntryTree.java (renamed from src/main/java/cuchaz/enigma/translation/mapping/tree/HashEntryTree.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/mapping/tree/HashTreeNode.java (renamed from src/main/java/cuchaz/enigma/translation/mapping/tree/HashTreeNode.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/representation/AccessFlags.java (renamed from src/main/java/cuchaz/enigma/translation/representation/AccessFlags.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/representation/Lambda.java (renamed from src/main/java/cuchaz/enigma/translation/representation/Lambda.java) | 210 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/representation/MethodDescriptor.java (renamed from src/main/java/cuchaz/enigma/translation/representation/MethodDescriptor.java) | 4 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/representation/Signature.java (renamed from src/main/java/cuchaz/enigma/translation/representation/Signature.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/representation/TypeDescriptor.java (renamed from src/main/java/cuchaz/enigma/translation/representation/TypeDescriptor.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/representation/entry/ClassDefEntry.java (renamed from src/main/java/cuchaz/enigma/translation/representation/entry/ClassDefEntry.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/representation/entry/ClassEntry.java (renamed from src/main/java/cuchaz/enigma/translation/representation/entry/ClassEntry.java) | 2 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/representation/entry/DefEntry.java (renamed from src/main/java/cuchaz/enigma/translation/representation/entry/DefEntry.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/representation/entry/Entry.java (renamed from src/main/java/cuchaz/enigma/translation/representation/entry/Entry.java) | 2 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/representation/entry/FieldDefEntry.java (renamed from src/main/java/cuchaz/enigma/translation/representation/entry/FieldDefEntry.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/representation/entry/FieldEntry.java (renamed from src/main/java/cuchaz/enigma/translation/representation/entry/FieldEntry.java) | 4 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableDefEntry.java (renamed from src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableDefEntry.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableEntry.java (renamed from src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableEntry.java) | 4 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/representation/entry/MethodDefEntry.java (renamed from src/main/java/cuchaz/enigma/translation/representation/entry/MethodDefEntry.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/representation/entry/MethodEntry.java (renamed from src/main/java/cuchaz/enigma/translation/representation/entry/MethodEntry.java) | 4 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/translation/representation/entry/ParentedEntry.java (renamed from src/main/java/cuchaz/enigma/translation/representation/entry/ParentedEntry.java) | 1 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/utils/I18n.java (renamed from src/main/java/cuchaz/enigma/utils/I18n.java) | 11 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/utils/Pair.java (renamed from src/main/java/cuchaz/enigma/utils/Pair.java) | 0 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/utils/Utils.java | 92 | ||||
| -rw-r--r-- | enigma/src/main/resources/META-INF/services/cuchaz.enigma.api.EnigmaPlugin (renamed from src/main/resources/META-INF/services/cuchaz.enigma.api.EnigmaPlugin) | 0 | ||||
| -rw-r--r-- | enigma/src/main/resources/lang/en_us.json (renamed from src/main/resources/lang/en_us.json) | 0 | ||||
| -rw-r--r-- | enigma/src/main/resources/lang/fr_fr.json (renamed from src/main/resources/lang/fr_fr.json) | 0 | ||||
| -rw-r--r-- | enigma/src/main/resources/lang/zh_cn.json (renamed from src/main/resources/lang/zh_cn.json) | 0 | ||||
| -rw-r--r-- | enigma/src/main/resources/profile.json (renamed from src/main/resources/profile.json) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/PackageVisibilityIndexTest.java (renamed from src/test/java/cuchaz/enigma/PackageVisibilityIndexTest.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/TestDeobfed.java (renamed from src/test/java/cuchaz/enigma/TestDeobfed.java) | 14 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/TestDeobfuscator.java (renamed from src/test/java/cuchaz/enigma/TestDeobfuscator.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/TestEntryFactory.java (renamed from src/test/java/cuchaz/enigma/TestEntryFactory.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/TestInnerClasses.java (renamed from src/test/java/cuchaz/enigma/TestInnerClasses.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/TestJarIndexConstructorReferences.java (renamed from src/test/java/cuchaz/enigma/TestJarIndexConstructorReferences.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/TestJarIndexInheritanceTree.java (renamed from src/test/java/cuchaz/enigma/TestJarIndexInheritanceTree.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/TestJarIndexLoneClass.java (renamed from src/test/java/cuchaz/enigma/TestJarIndexLoneClass.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/TestMethodDescriptor.java (renamed from src/test/java/cuchaz/enigma/TestMethodDescriptor.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/TestTokensConstructors.java (renamed from src/test/java/cuchaz/enigma/TestTokensConstructors.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/TestTranslator.java (renamed from src/test/java/cuchaz/enigma/TestTranslator.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/TestTypeDescriptor.java (renamed from src/test/java/cuchaz/enigma/TestTypeDescriptor.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/TokenChecker.java (renamed from src/test/java/cuchaz/enigma/TokenChecker.java) | 2 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/inputs/Keep.java (renamed from src/test/java/cuchaz/enigma/inputs/Keep.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/inputs/constructors/BaseClass.java (renamed from src/test/java/cuchaz/enigma/inputs/constructors/BaseClass.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/inputs/constructors/Caller.java (renamed from src/test/java/cuchaz/enigma/inputs/constructors/Caller.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/inputs/constructors/DefaultConstructable.java (renamed from src/test/java/cuchaz/enigma/inputs/constructors/DefaultConstructable.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/inputs/constructors/SubClass.java (renamed from src/test/java/cuchaz/enigma/inputs/constructors/SubClass.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/inputs/constructors/SubSubClass.java (renamed from src/test/java/cuchaz/enigma/inputs/constructors/SubSubClass.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/inputs/inheritanceTree/BaseClass.java (renamed from src/test/java/cuchaz/enigma/inputs/inheritanceTree/BaseClass.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/inputs/inheritanceTree/SubclassA.java (renamed from src/test/java/cuchaz/enigma/inputs/inheritanceTree/SubclassA.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/inputs/inheritanceTree/SubclassB.java (renamed from src/test/java/cuchaz/enigma/inputs/inheritanceTree/SubclassB.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/inputs/inheritanceTree/SubsubclassAA.java (renamed from src/test/java/cuchaz/enigma/inputs/inheritanceTree/SubsubclassAA.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/inputs/innerClasses/A_Anonymous.java (renamed from src/test/java/cuchaz/enigma/inputs/innerClasses/A_Anonymous.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/inputs/innerClasses/B_AnonymousWithScopeArgs.java (renamed from src/test/java/cuchaz/enigma/inputs/innerClasses/B_AnonymousWithScopeArgs.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/inputs/innerClasses/C_ConstructorArgs.java (renamed from src/test/java/cuchaz/enigma/inputs/innerClasses/C_ConstructorArgs.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/inputs/innerClasses/D_Simple.java (renamed from src/test/java/cuchaz/enigma/inputs/innerClasses/D_Simple.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/inputs/innerClasses/E_AnonymousWithOuterAccess.java (renamed from src/test/java/cuchaz/enigma/inputs/innerClasses/E_AnonymousWithOuterAccess.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/inputs/innerClasses/F_ClassTree.java (renamed from src/test/java/cuchaz/enigma/inputs/innerClasses/F_ClassTree.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/inputs/loneClass/LoneClass.java (renamed from src/test/java/cuchaz/enigma/inputs/loneClass/LoneClass.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/inputs/packageAccess/Base.java (renamed from src/test/java/cuchaz/enigma/inputs/packageAccess/Base.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/inputs/packageAccess/SamePackageChild.java (renamed from src/test/java/cuchaz/enigma/inputs/packageAccess/SamePackageChild.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/inputs/packageAccess/sub/OtherPackageChild.java (renamed from src/test/java/cuchaz/enigma/inputs/packageAccess/sub/OtherPackageChild.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/inputs/translation/A_Basic.java (renamed from src/test/java/cuchaz/enigma/inputs/translation/A_Basic.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/inputs/translation/B_BaseClass.java (renamed from src/test/java/cuchaz/enigma/inputs/translation/B_BaseClass.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/inputs/translation/C_SubClass.java (renamed from src/test/java/cuchaz/enigma/inputs/translation/C_SubClass.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/inputs/translation/D_AnonymousTesting.java (renamed from src/test/java/cuchaz/enigma/inputs/translation/D_AnonymousTesting.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/inputs/translation/E_Bridges.java (renamed from src/test/java/cuchaz/enigma/inputs/translation/E_Bridges.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/inputs/translation/F_ObjectMethods.java (renamed from src/test/java/cuchaz/enigma/inputs/translation/F_ObjectMethods.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/inputs/translation/G_OuterClass.java (renamed from src/test/java/cuchaz/enigma/inputs/translation/G_OuterClass.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/inputs/translation/H_NamelessClass.java (renamed from src/test/java/cuchaz/enigma/inputs/translation/H_NamelessClass.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/inputs/translation/I_Generics.java (renamed from src/test/java/cuchaz/enigma/inputs/translation/I_Generics.java) | 0 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/translation/mapping/TestComments.java (renamed from src/test/java/cuchaz/enigma/mapping/TestComments.java) | 13 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/translation/mapping/TestTinyV2InnerClasses.java (renamed from src/test/java/cuchaz/enigma/mapping/TestTinyV2InnerClasses.java) | 8 | ||||
| -rw-r--r-- | enigma/src/test/java/cuchaz/enigma/translation/mapping/TestV2Main.java (renamed from src/test/java/cuchaz/enigma/mapping/TestV2Main.java) | 11 | ||||
| -rw-r--r-- | enigma/src/test/resources/comments/test.mapping (renamed from src/test/resources/comments/test.mapping) | 0 | ||||
| -rw-r--r-- | enigma/src/test/resources/proguard-build.conf (renamed from src/test/resources/proguard-build.conf) | 2 | ||||
| -rw-r--r-- | enigma/src/test/resources/proguard-test.conf (renamed from src/test/resources/proguard-test.conf) | 0 | ||||
| -rw-r--r-- | enigma/src/test/resources/tinyV2InnerClasses/c.mapping (renamed from src/test/resources/tinyV2InnerClasses/c.mapping) | 0 | ||||
| -rw-r--r-- | enigma/src/test/resources/tinyV2InnerClasses/cuchaz/enigma/Dad.mapping (renamed from src/test/resources/tinyV2InnerClasses/cuchaz/enigma/Dad.mapping) | 0 | ||||
| -rw-r--r-- | enigma/src/test/resources/translation.mappings (renamed from src/test/java/cuchaz/enigma/resources/translation.mappings) | 0 | ||||
| -rw-r--r-- | settings.gradle | 5 | ||||
| -rw-r--r-- | src/main/java/cuchaz/enigma/Constants.java | 20 | ||||
| -rw-r--r-- | src/main/java/cuchaz/enigma/command/MappingCommandsUtil.java | 148 | ||||
| -rw-r--r-- | src/main/java/cuchaz/enigma/throwables/MappingConflict.java | 7 | ||||
| -rw-r--r-- | src/main/java/cuchaz/enigma/utils/LFPrintWriter.java | 16 | ||||
| -rw-r--r-- | src/main/java/cuchaz/enigma/utils/Utils.java | 179 | ||||
| -rw-r--r-- | src/test/java/cuchaz/enigma/TestSourceIndex.java | 74 |
312 files changed, 1186 insertions, 1431 deletions
| @@ -1,231 +1,35 @@ | |||
| 1 | ### Windows ### | 1 | # Gradle |
| 2 | # Windows image file caches | 2 | .gradle |
| 3 | Thumbs.db | ||
| 4 | ehthumbs.db | ||
| 5 | |||
| 6 | # Folder config file | ||
| 7 | Desktop.ini | ||
| 8 | |||
| 9 | # Recycle Bin used on file shares | ||
| 10 | $RECYCLE.BIN/ | ||
| 11 | |||
| 12 | # Windows Installer files | ||
| 13 | *.cab | ||
| 14 | *.msi | ||
| 15 | *.msm | ||
| 16 | *.msp | ||
| 17 | |||
| 18 | # Windows shortcuts | ||
| 19 | *.lnk | ||
| 20 | |||
| 21 | |||
| 22 | ### OSX ### | ||
| 23 | *.DS_Store | ||
| 24 | .AppleDouble | ||
| 25 | .LSOverride | ||
| 26 | |||
| 27 | # Icon must end with two \r | ||
| 28 | Icon | ||
| 29 | |||
| 30 | |||
| 31 | # Thumbnails | ||
| 32 | ._* | ||
| 33 | |||
| 34 | # Files that might appear in the root of a volume | ||
| 35 | .DocumentRevisions-V100 | ||
| 36 | .fseventsd | ||
| 37 | .Spotlight-V100 | ||
| 38 | .TemporaryItems | ||
| 39 | .Trashes | ||
| 40 | .VolumeIcon.icns | ||
| 41 | .com.apple.timemachine.donotpresent | ||
| 42 | |||
| 43 | # Directories potentially created on remote AFP share | ||
| 44 | .AppleDB | ||
| 45 | .AppleDesktop | ||
| 46 | Network Trash Folder | ||
| 47 | Temporary Items | ||
| 48 | .apdisk | ||
| 49 | |||
| 50 | |||
| 51 | ### Linux ### | ||
| 52 | *~ | ||
| 53 | |||
| 54 | # temporary files which can be created if a process still has a handle open of a deleted file | ||
| 55 | .fuse_hidden* | ||
| 56 | |||
| 57 | # KDE directory preferences | ||
| 58 | .directory | ||
| 59 | |||
| 60 | # Linux trash folder which might appear on any partition or disk | ||
| 61 | .Trash-* | ||
| 62 | |||
| 63 | |||
| 64 | ### Vim ### | ||
| 65 | # swap | ||
| 66 | [._]*.s[a-w][a-z] | ||
| 67 | [._]s[a-w][a-z] | ||
| 68 | # session | ||
| 69 | Session.vim | ||
| 70 | # temporary | ||
| 71 | .netrwhist | ||
| 72 | *~ | ||
| 73 | # auto-generated tag files | ||
| 74 | tags | ||
| 75 | |||
| 76 | |||
| 77 | ### Emacs ### | ||
| 78 | # -*- mode: gitignore; -*- | ||
| 79 | *~ | ||
| 80 | \#*\# | ||
| 81 | /.emacs.desktop | ||
| 82 | /.emacs.desktop.lock | ||
| 83 | *.elc | ||
| 84 | auto-save-list | ||
| 85 | tramp | ||
| 86 | .\#* | ||
| 87 | |||
| 88 | # Org-mode | ||
| 89 | .org-id-locations | ||
| 90 | *_archive | ||
| 91 | |||
| 92 | # flymake-mode | ||
| 93 | *_flymake.* | ||
| 94 | |||
| 95 | # eshell files | ||
| 96 | /eshell/history | ||
| 97 | /eshell/lastdir | ||
| 98 | |||
| 99 | # elpa packages | ||
| 100 | /elpa/ | ||
| 101 | |||
| 102 | # reftex files | ||
| 103 | *.rel | ||
| 104 | |||
| 105 | # AUCTeX auto folder | ||
| 106 | /auto/ | ||
| 107 | |||
| 108 | # cask packages | ||
| 109 | .cask/ | ||
| 110 | dist/ | ||
| 111 | |||
| 112 | # Flycheck | ||
| 113 | flycheck_*.el | ||
| 114 | |||
| 115 | # server auth directory | ||
| 116 | /server/ | ||
| 117 | |||
| 118 | # projectiles files | ||
| 119 | .projectile | ||
| 120 | |||
| 121 | ### Intellij ### | ||
| 122 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm | ||
| 123 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 | ||
| 124 | |||
| 125 | # User-specific stuff: | ||
| 126 | .idea/workspace.xml | ||
| 127 | .idea/tasks.xml | ||
| 128 | .idea/dictionaries | ||
| 129 | .idea/vcs.xml | ||
| 130 | .idea/jsLibraryMappings.xml | ||
| 131 | |||
| 132 | # Sensitive or high-churn files: | ||
| 133 | .idea/dataSources.ids | ||
| 134 | .idea/dataSources.xml | ||
| 135 | .idea/dataSources.local.xml | ||
| 136 | .idea/sqlDataSources.xml | ||
| 137 | .idea/dynamic.xml | ||
| 138 | .idea/uiDesigner.xml | ||
| 139 | |||
| 140 | # Gradle: | ||
| 141 | .idea/gradle.xml | ||
| 142 | .idea/libraries | ||
| 143 | |||
| 144 | ## File-based project format: | ||
| 145 | *.iws | ||
| 146 | *.iml | ||
| 147 | *.ipr | ||
| 148 | |||
| 149 | ## Plugin-specific files: | ||
| 150 | |||
| 151 | # IntelliJ | ||
| 152 | /out/ | ||
| 153 | .idea | ||
| 154 | |||
| 155 | # mpeltonen/sbt-idea plugin | ||
| 156 | .idea_modules/ | ||
| 157 | |||
| 158 | # JIRA plugin | ||
| 159 | atlassian-ide-plugin.xml | ||
| 160 | |||
| 161 | ### Eclipse ### | ||
| 162 | 3 | ||
| 4 | # Eclipse | ||
| 5 | .checkstyle | ||
| 6 | .classpath | ||
| 163 | .metadata | 7 | .metadata |
| 164 | bin/ | 8 | .settings |
| 165 | tmp/ | ||
| 166 | *.tmp | ||
| 167 | *.bak | ||
| 168 | *.swp | ||
| 169 | *~.nib | ||
| 170 | local.properties | ||
| 171 | .settings/ | ||
| 172 | .loadpath | ||
| 173 | .recommenders | ||
| 174 | |||
| 175 | # Eclipse Core | ||
| 176 | .project | 9 | .project |
| 177 | |||
| 178 | # External tool builders | ||
| 179 | .externalToolBuilders/ | ||
| 180 | |||
| 181 | # Locally stored "Eclipse launch configurations" | ||
| 182 | *.launch | 10 | *.launch |
| 183 | 11 | ||
| 184 | # CDT-specific (C/C++ Development Tooling) | 12 | # Intellij/Idea |
| 185 | .cproject | ||
| 186 | |||
| 187 | # JDT-specific (Eclipse Java Development Tools) | ||
| 188 | .classpath | ||
| 189 | |||
| 190 | # Java annotation processor (APT) | ||
| 191 | .factorypath | 13 | .factorypath |
| 14 | .idea | ||
| 15 | *.iml | ||
| 16 | *.ipr | ||
| 17 | *.iws | ||
| 192 | 18 | ||
| 193 | # sbteclipse plugin | 19 | # Build artifacts |
| 194 | .target | 20 | bin/ |
| 195 | 21 | build/ | |
| 196 | # Tern plugin | 22 | jars/ |
| 197 | .tern-project | 23 | out/ |
| 198 | 24 | classes/ | |
| 199 | # TeXlipse plugin | ||
| 200 | .texlipse | ||
| 201 | |||
| 202 | # STS (Spring Tool Suite) | ||
| 203 | .springBeans | ||
| 204 | |||
| 205 | # Code Recommenders | ||
| 206 | .recommenders/ | ||
| 207 | |||
| 208 | |||
| 209 | ### Java ### | ||
| 210 | *.class | ||
| 211 | |||
| 212 | # Package Files # | ||
| 213 | *.jar | ||
| 214 | *.war | ||
| 215 | *.ear | ||
| 216 | |||
| 217 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml | ||
| 218 | hs_err_pid* | ||
| 219 | |||
| 220 | ### Gradle ### | ||
| 221 | .gradle | ||
| 222 | /build/ | ||
| 223 | 25 | ||
| 224 | # Ignore Gradle GUI config | 26 | # Debug artifacts |
| 225 | gradle-app.setting | 27 | run |
| 28 | *.log | ||
| 226 | 29 | ||
| 227 | # Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) | 30 | # Windows |
| 228 | !gradle-wrapper.jar | 31 | *.db |
| 32 | $RECYCLE.BIN/ | ||
| 229 | 33 | ||
| 230 | # Cache of project | 34 | # Mac |
| 231 | .gradletasknamecache \ No newline at end of file | 35 | .DS_Store |
| @@ -17,7 +17,7 @@ Enigma includes the following open-source libraries: | |||
| 17 | 17 | ||
| 18 | ## Usage | 18 | ## Usage |
| 19 | 19 | ||
| 20 | Pre-compiled jars can be found on the [fabric maven](https://maven.fabricmc.net/cuchaz/enigma/). | 20 | Pre-compiled jars can be found on the [fabric maven](https://maven.fabricmc.net/cuchaz/enigma-swing/). |
| 21 | 21 | ||
| 22 | ### Launching the GUI | 22 | ### Launching the GUI |
| 23 | 23 | ||
| @@ -25,4 +25,4 @@ Pre-compiled jars can be found on the [fabric maven](https://maven.fabricmc.net/ | |||
| 25 | 25 | ||
| 26 | ### On the command line | 26 | ### On the command line |
| 27 | 27 | ||
| 28 | `java -cp enigma.jar cuchaz.enigma.CommandMain` | 28 | `java -cp enigma.jar cuchaz.enigma.command.Main` |
diff --git a/build.gradle b/build.gradle index ba2d86c..bd2d99f 100644 --- a/build.gradle +++ b/build.gradle | |||
| @@ -1,165 +1,59 @@ | |||
| 1 | plugins { | 1 | plugins { |
| 2 | id 'java' | ||
| 3 | id 'com.github.johnrengelman.shadow' version '5.2.0' | ||
| 4 | id 'maven-publish' | 2 | id 'maven-publish' |
| 5 | } | 3 | } |
| 6 | 4 | ||
| 7 | group = 'cuchaz' | 5 | subprojects { |
| 8 | version = '0.16.1' | 6 | apply plugin: 'java' |
| 7 | apply plugin: 'maven-publish' | ||
| 9 | 8 | ||
| 10 | def generatedSourcesDir = "$buildDir/generated-src" | 9 | sourceCompatibility = 1.8 |
| 10 | targetCompatibility = 1.8 | ||
| 11 | 11 | ||
| 12 | def buildNumber = System.getenv("BUILD_NUMBER") | 12 | repositories { |
| 13 | version = version + "+" + (buildNumber ? "build.$buildNumber" : "local") | 13 | mavenLocal() |
| 14 | 14 | mavenCentral() | |
| 15 | sourceCompatibility = 1.8 | 15 | maven { url 'https://maven.fabricmc.net/' } |
| 16 | targetCompatibility = 1.8 | ||
| 17 | |||
| 18 | task generateSources(type: Copy) { | ||
| 19 | from sourceSets.main.java | ||
| 20 | into generatedSourcesDir | ||
| 21 | |||
| 22 | filter { String line -> | ||
| 23 | ("$line".replaceAll('@VERSION@', version)) | ||
| 24 | } | 16 | } |
| 25 | } | ||
| 26 | 17 | ||
| 27 | compileJava.source = generatedSourcesDir | 18 | dependencies { |
| 28 | compileJava.dependsOn generateSources | 19 | implementation 'com.google.guava:guava:28.0-jre' |
| 20 | implementation 'com.google.code.gson:gson:2.8.5' | ||
| 29 | 21 | ||
| 30 | repositories { | 22 | testImplementation 'junit:junit:4.+' |
| 31 | mavenLocal() | 23 | testImplementation 'org.hamcrest:hamcrest-all:1.+' |
| 32 | mavenCentral() | ||
| 33 | |||
| 34 | maven { | ||
| 35 | name "Modmuss Repository" | ||
| 36 | url 'https://maven.modmuss50.me/' | ||
| 37 | } | 24 | } |
| 38 | } | ||
| 39 | |||
| 40 | configurations { | ||
| 41 | proGuard | ||
| 42 | } | ||
| 43 | |||
| 44 | dependencies { | ||
| 45 | implementation 'com.google.guava:guava:28.0-jre' | ||
| 46 | implementation 'com.google.code.gson:gson:2.8.5' | ||
| 47 | implementation 'org.ow2.asm:asm:8.0' | ||
| 48 | implementation 'org.ow2.asm:asm-commons:8.0' | ||
| 49 | implementation 'org.ow2.asm:asm-tree:8.0' | ||
| 50 | implementation 'org.ow2.asm:asm-util:8.0' | ||
| 51 | implementation 'net.sf.jopt-simple:jopt-simple:6.0-alpha-3' | ||
| 52 | implementation 'net.fabricmc:procyon-fabric-compilertools:0.5.35.13' | ||
| 53 | implementation 'net.fabricmc:cfr:0.0.1' | ||
| 54 | implementation 'com.bulenkov:darcula:1.0.0-bobbylight' | ||
| 55 | implementation 'de.sciss:syntaxpane:1.2.0' | ||
| 56 | implementation 'com.github.lukeu:swing-dpi:0.6' | ||
| 57 | 25 | ||
| 58 | testImplementation 'junit:junit:4.+' | 26 | group = 'cuchaz' |
| 59 | testImplementation 'org.hamcrest:hamcrest-all:1.+' | 27 | version = '0.17' |
| 60 | 28 | ||
| 61 | proGuard 'net.sf.proguard:proguard-base:6.+' | 29 | def buildNumber = System.getenv("BUILD_NUMBER") |
| 62 | } | 30 | version = version + "+" + (buildNumber ? "build.$buildNumber" : "local") |
| 63 | |||
| 64 | def libraryJarsArg = JavaVersion.current().java9Compatible ? "<java.home>/jmods": "<java.home>/lib/rt.jar" | ||
| 65 | |||
| 66 | // For each set of test inputs, create an output jar and obfuscate it. | ||
| 67 | file('src/test/java/cuchaz/enigma/inputs').listFiles().each { theFile -> | ||
| 68 | if (theFile.directory) { | ||
| 69 | task("${theFile.name}TestJar", type: Jar) { | ||
| 70 | from(sourceSets.test.output) { | ||
| 71 | include "cuchaz/enigma/inputs/$theFile.name/**/*.class" | ||
| 72 | include 'cuchaz/enigma/inputs/Keep.class' | ||
| 73 | } | ||
| 74 | |||
| 75 | archiveFileName = theFile.name + '.jar' | ||
| 76 | destinationDirectory = file('build/test-inputs') | ||
| 77 | } | ||
| 78 | |||
| 79 | task("${theFile.name}TestObf", type: JavaExec, | ||
| 80 | dependsOn: "${theFile.name}TestJar") { | ||
| 81 | main 'proguard.ProGuard' | ||
| 82 | classpath configurations.proGuard | ||
| 83 | |||
| 84 | args '@src/test/resources/proguard-test.conf', '-injars', file('build/test-inputs/' + | ||
| 85 | "${theFile.name}.jar"), '-libraryjars', libraryJarsArg, | ||
| 86 | '-outjars', file('build/test-obf/' + "${theFile.name}.jar") | ||
| 87 | } | ||
| 88 | 31 | ||
| 89 | test.dependsOn "${theFile.name}TestObf" | 32 | task sourcesJar(type: Jar, dependsOn: classes) { |
| 33 | classifier = 'sources' | ||
| 34 | from sourceSets.main.allSource | ||
| 90 | } | 35 | } |
| 91 | } | ||
| 92 | |||
| 93 | // We also semi-deobfuscate translation.jar to then test it... yeah... oh well. | ||
| 94 | task('deobfTranslationInput', type: JavaExec, dependsOn: 'translationTestObf') | ||
| 95 | { | ||
| 96 | classpath sourceSets.main.runtimeClasspath | ||
| 97 | main 'cuchaz.enigma.CommandMain' | ||
| 98 | args 'deobfuscate', file('build/test-obf/translation.jar'), | ||
| 99 | file('build/test-deobf/translation.jar') | ||
| 100 | } | ||
| 101 | test.dependsOn 'deobfTranslationInput' | ||
| 102 | 36 | ||
| 103 | test { | 37 | java { |
| 104 | // Since the Minecraft test is really long (like 10 minutes D:) we turn it | 38 | withSourcesJar() |
| 105 | // off by default. | ||
| 106 | if (!System.getProperty('enableExtremelySlowMinecraftTest', '') | ||
| 107 | .equalsIgnoreCase('true')) { | ||
| 108 | exclude 'cuchaz/enigma/TestSourceIndex.class' | ||
| 109 | } | 39 | } |
| 110 | 40 | ||
| 111 | // Allow people to specify a custom path to their Minecraft directory. | 41 | publishing { |
| 112 | // (Example: `gradle build -Denigma.test.minecraftdir=./`) | 42 | publications { |
| 113 | systemProperties = [ | 43 | "$project.name"(MavenPublication) { |
| 114 | 'enigma.test.minecraftdir': System.getProperty('test.minecraftdir') | 44 | groupId project.group |
| 115 | ] | 45 | artifactId project.name |
| 116 | } | 46 | version project.version |
| 117 | 47 | from components.java | |
| 118 | // Set the main class. | 48 | } |
| 119 | jar.manifest.attributes 'Main-Class': 'cuchaz.enigma.Main' | 49 | } |
| 120 | |||
| 121 | // Make the "fat" application jar. This is useful to just throw in a classpath | ||
| 122 | // for tests, though it includes some slightly useless stuff. | ||
| 123 | shadowJar { | ||
| 124 | append 'LICENSE' | ||
| 125 | append 'README.md' | ||
| 126 | } | ||
| 127 | |||
| 128 | // Create a library jar, containing only the deobfuscation code, for use at | ||
| 129 | // runtime. This will be deployed to Maven Local with a POM, and can be uploaded | ||
| 130 | // to a remote server manually (for now anyway). | ||
| 131 | task libJar (type: Jar) { | ||
| 132 | classifier = 'lib' | ||
| 133 | |||
| 134 | from(sourceSets.main.output) { | ||
| 135 | exclude 'cuchaz/enigma/gui/**' | ||
| 136 | exclude 'cuchaz/enigma/convert/**' | ||
| 137 | |||
| 138 | // Main classes + inner classes (keep CommandMain) | ||
| 139 | exclude 'cuchaz/enigma/Main.class' | ||
| 140 | exclude 'cuchaz/enigma/Main.class' | ||
| 141 | } | 50 | } |
| 142 | } | 51 | } |
| 143 | 52 | ||
| 144 | task sourcesJar(type: Jar, dependsOn: generateSources) { | ||
| 145 | classifier = 'sources' | ||
| 146 | from generatedSourcesDir | ||
| 147 | from sourceSets.main.resources | ||
| 148 | } | ||
| 149 | |||
| 150 | publishing { | 53 | publishing { |
| 151 | publications { | ||
| 152 | mavenJava(MavenPublication) { | ||
| 153 | from components.java | ||
| 154 | |||
| 155 | artifact shadowJar | ||
| 156 | artifact libJar | ||
| 157 | artifact sourcesJar | ||
| 158 | } | ||
| 159 | } | ||
| 160 | |||
| 161 | // select the repositories you want to publish to | ||
| 162 | repositories { | 54 | repositories { |
| 55 | mavenLocal() | ||
| 56 | |||
| 163 | if (project.hasProperty('mavenPass')) { | 57 | if (project.hasProperty('mavenPass')) { |
| 164 | maven { | 58 | maven { |
| 165 | url = "http://mavenupload.modmuss50.me/" | 59 | url = "http://mavenupload.modmuss50.me/" |
diff --git a/enigma-cli/build.gradle b/enigma-cli/build.gradle new file mode 100644 index 0000000..3ee1239 --- /dev/null +++ b/enigma-cli/build.gradle | |||
| @@ -0,0 +1,5 @@ | |||
| 1 | dependencies { | ||
| 2 | implementation project(':enigma') | ||
| 3 | } | ||
| 4 | |||
| 5 | jar.manifest.attributes 'Main-Class': 'cuchaz.enigma.command.Main' | ||
diff --git a/src/main/java/cuchaz/enigma/command/CheckMappingsCommand.java b/enigma-cli/src/main/java/cuchaz/enigma/command/CheckMappingsCommand.java index 9d238e3..e4deef8 100644 --- a/src/main/java/cuchaz/enigma/command/CheckMappingsCommand.java +++ b/enigma-cli/src/main/java/cuchaz/enigma/command/CheckMappingsCommand.java | |||
| @@ -5,7 +5,7 @@ import cuchaz.enigma.EnigmaProject; | |||
| 5 | import cuchaz.enigma.ProgressListener; | 5 | import cuchaz.enigma.ProgressListener; |
| 6 | import cuchaz.enigma.analysis.index.JarIndex; | 6 | import cuchaz.enigma.analysis.index.JarIndex; |
| 7 | import cuchaz.enigma.translation.mapping.EntryMapping; | 7 | import cuchaz.enigma.translation.mapping.EntryMapping; |
| 8 | import cuchaz.enigma.translation.mapping.MappingSaveParameters; | 8 | import cuchaz.enigma.translation.mapping.serde.MappingSaveParameters; |
| 9 | import cuchaz.enigma.translation.mapping.serde.MappingFormat; | 9 | import cuchaz.enigma.translation.mapping.serde.MappingFormat; |
| 10 | import cuchaz.enigma.translation.mapping.tree.EntryTree; | 10 | import cuchaz.enigma.translation.mapping.tree.EntryTree; |
| 11 | import cuchaz.enigma.translation.representation.entry.ClassEntry; | 11 | import cuchaz.enigma.translation.representation.entry.ClassEntry; |
diff --git a/src/main/java/cuchaz/enigma/command/Command.java b/enigma-cli/src/main/java/cuchaz/enigma/command/Command.java index 09dd321..0640e3e 100644 --- a/src/main/java/cuchaz/enigma/command/Command.java +++ b/enigma-cli/src/main/java/cuchaz/enigma/command/Command.java | |||
| @@ -4,7 +4,7 @@ import cuchaz.enigma.Enigma; | |||
| 4 | import cuchaz.enigma.EnigmaProject; | 4 | import cuchaz.enigma.EnigmaProject; |
| 5 | import cuchaz.enigma.ProgressListener; | 5 | import cuchaz.enigma.ProgressListener; |
| 6 | import cuchaz.enigma.translation.mapping.EntryMapping; | 6 | import cuchaz.enigma.translation.mapping.EntryMapping; |
| 7 | import cuchaz.enigma.translation.mapping.MappingSaveParameters; | 7 | import cuchaz.enigma.translation.mapping.serde.MappingSaveParameters; |
| 8 | import cuchaz.enigma.translation.mapping.serde.MappingFormat; | 8 | import cuchaz.enigma.translation.mapping.serde.MappingFormat; |
| 9 | import cuchaz.enigma.translation.mapping.tree.EntryTree; | 9 | import cuchaz.enigma.translation.mapping.tree.EntryTree; |
| 10 | 10 | ||
diff --git a/src/main/java/cuchaz/enigma/command/ComposeMappingsCommand.java b/enigma-cli/src/main/java/cuchaz/enigma/command/ComposeMappingsCommand.java index f57f1fa..e10fd47 100644 --- a/src/main/java/cuchaz/enigma/command/ComposeMappingsCommand.java +++ b/enigma-cli/src/main/java/cuchaz/enigma/command/ComposeMappingsCommand.java | |||
| @@ -1,9 +1,10 @@ | |||
| 1 | package cuchaz.enigma.command; | 1 | package cuchaz.enigma.command; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.throwables.MappingParseException; | 3 | import cuchaz.enigma.translation.mapping.MappingOperations; |
| 4 | import cuchaz.enigma.translation.mapping.serde.MappingParseException; | ||
| 4 | import cuchaz.enigma.translation.mapping.EntryMapping; | 5 | import cuchaz.enigma.translation.mapping.EntryMapping; |
| 5 | import cuchaz.enigma.translation.mapping.MappingFileNameFormat; | 6 | import cuchaz.enigma.translation.mapping.serde.MappingFileNameFormat; |
| 6 | import cuchaz.enigma.translation.mapping.MappingSaveParameters; | 7 | import cuchaz.enigma.translation.mapping.serde.MappingSaveParameters; |
| 7 | import cuchaz.enigma.translation.mapping.tree.EntryTree; | 8 | import cuchaz.enigma.translation.mapping.tree.EntryTree; |
| 8 | import cuchaz.enigma.utils.Utils; | 9 | import cuchaz.enigma.utils.Utils; |
| 9 | 10 | ||
| @@ -32,7 +33,7 @@ public class ComposeMappingsCommand extends Command { | |||
| 32 | 33 | ||
| 33 | EntryTree<EntryMapping> left = MappingCommandsUtil.read(args[0], Paths.get(args[1]), saveParameters); | 34 | EntryTree<EntryMapping> left = MappingCommandsUtil.read(args[0], Paths.get(args[1]), saveParameters); |
| 34 | EntryTree<EntryMapping> right = MappingCommandsUtil.read(args[2], Paths.get(args[3]), saveParameters); | 35 | EntryTree<EntryMapping> right = MappingCommandsUtil.read(args[2], Paths.get(args[3]), saveParameters); |
| 35 | EntryTree<EntryMapping> result = MappingCommandsUtil.compose(left, right, args[6].equals("left") || args[6].equals("both"), args[6].equals("right") || args[6].equals("both")); | 36 | EntryTree<EntryMapping> result = MappingOperations.compose(left, right, args[6].equals("left") || args[6].equals("both"), args[6].equals("right") || args[6].equals("both")); |
| 36 | 37 | ||
| 37 | Path output = Paths.get(args[5]); | 38 | Path output = Paths.get(args[5]); |
| 38 | Utils.delete(output); | 39 | Utils.delete(output); |
diff --git a/src/main/java/cuchaz/enigma/command/ConvertMappingsCommand.java b/enigma-cli/src/main/java/cuchaz/enigma/command/ConvertMappingsCommand.java index 689df02..144d89c 100644 --- a/src/main/java/cuchaz/enigma/command/ConvertMappingsCommand.java +++ b/enigma-cli/src/main/java/cuchaz/enigma/command/ConvertMappingsCommand.java | |||
| @@ -1,9 +1,9 @@ | |||
| 1 | package cuchaz.enigma.command; | 1 | package cuchaz.enigma.command; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.throwables.MappingParseException; | 3 | import cuchaz.enigma.translation.mapping.serde.MappingParseException; |
| 4 | import cuchaz.enigma.translation.mapping.EntryMapping; | 4 | import cuchaz.enigma.translation.mapping.EntryMapping; |
| 5 | import cuchaz.enigma.translation.mapping.MappingFileNameFormat; | 5 | import cuchaz.enigma.translation.mapping.serde.MappingFileNameFormat; |
| 6 | import cuchaz.enigma.translation.mapping.MappingSaveParameters; | 6 | import cuchaz.enigma.translation.mapping.serde.MappingSaveParameters; |
| 7 | import cuchaz.enigma.translation.mapping.tree.EntryTree; | 7 | import cuchaz.enigma.translation.mapping.tree.EntryTree; |
| 8 | import cuchaz.enigma.utils.Utils; | 8 | import cuchaz.enigma.utils.Utils; |
| 9 | 9 | ||
diff --git a/src/main/java/cuchaz/enigma/command/DecompileCommand.java b/enigma-cli/src/main/java/cuchaz/enigma/command/DecompileCommand.java index 3d15dac..3d15dac 100644 --- a/src/main/java/cuchaz/enigma/command/DecompileCommand.java +++ b/enigma-cli/src/main/java/cuchaz/enigma/command/DecompileCommand.java | |||
diff --git a/src/main/java/cuchaz/enigma/command/DeobfuscateCommand.java b/enigma-cli/src/main/java/cuchaz/enigma/command/DeobfuscateCommand.java index b0d2a7d..b0d2a7d 100644 --- a/src/main/java/cuchaz/enigma/command/DeobfuscateCommand.java +++ b/enigma-cli/src/main/java/cuchaz/enigma/command/DeobfuscateCommand.java | |||
diff --git a/src/main/java/cuchaz/enigma/command/InvertMappingsCommand.java b/enigma-cli/src/main/java/cuchaz/enigma/command/InvertMappingsCommand.java index cd11e2e..0780a96 100644 --- a/src/main/java/cuchaz/enigma/command/InvertMappingsCommand.java +++ b/enigma-cli/src/main/java/cuchaz/enigma/command/InvertMappingsCommand.java | |||
| @@ -1,9 +1,10 @@ | |||
| 1 | package cuchaz.enigma.command; | 1 | package cuchaz.enigma.command; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.throwables.MappingParseException; | 3 | import cuchaz.enigma.translation.mapping.MappingOperations; |
| 4 | import cuchaz.enigma.translation.mapping.serde.MappingParseException; | ||
| 4 | import cuchaz.enigma.translation.mapping.EntryMapping; | 5 | import cuchaz.enigma.translation.mapping.EntryMapping; |
| 5 | import cuchaz.enigma.translation.mapping.MappingFileNameFormat; | 6 | import cuchaz.enigma.translation.mapping.serde.MappingFileNameFormat; |
| 6 | import cuchaz.enigma.translation.mapping.MappingSaveParameters; | 7 | import cuchaz.enigma.translation.mapping.serde.MappingSaveParameters; |
| 7 | import cuchaz.enigma.translation.mapping.tree.EntryTree; | 8 | import cuchaz.enigma.translation.mapping.tree.EntryTree; |
| 8 | import cuchaz.enigma.utils.Utils; | 9 | import cuchaz.enigma.utils.Utils; |
| 9 | 10 | ||
| @@ -31,7 +32,7 @@ public class InvertMappingsCommand extends Command { | |||
| 31 | MappingSaveParameters saveParameters = new MappingSaveParameters(MappingFileNameFormat.BY_DEOBF); | 32 | MappingSaveParameters saveParameters = new MappingSaveParameters(MappingFileNameFormat.BY_DEOBF); |
| 32 | 33 | ||
| 33 | EntryTree<EntryMapping> source = MappingCommandsUtil.read(args[0], Paths.get(args[1]), saveParameters); | 34 | EntryTree<EntryMapping> source = MappingCommandsUtil.read(args[0], Paths.get(args[1]), saveParameters); |
| 34 | EntryTree<EntryMapping> result = MappingCommandsUtil.invert(source); | 35 | EntryTree<EntryMapping> result = MappingOperations.invert(source); |
| 35 | 36 | ||
| 36 | Path output = Paths.get(args[3]); | 37 | Path output = Paths.get(args[3]); |
| 37 | Utils.delete(output); | 38 | Utils.delete(output); |
diff --git a/src/main/java/cuchaz/enigma/CommandMain.java b/enigma-cli/src/main/java/cuchaz/enigma/command/Main.java index 93b013d..0a4c1b9 100644 --- a/src/main/java/cuchaz/enigma/CommandMain.java +++ b/enigma-cli/src/main/java/cuchaz/enigma/command/Main.java | |||
| @@ -9,15 +9,15 @@ | |||
| 9 | * Jeff Martin - initial API and implementation | 9 | * Jeff Martin - initial API and implementation |
| 10 | ******************************************************************************/ | 10 | ******************************************************************************/ |
| 11 | 11 | ||
| 12 | package cuchaz.enigma; | 12 | package cuchaz.enigma.command; |
| 13 | 13 | ||
| 14 | import cuchaz.enigma.command.*; | 14 | import cuchaz.enigma.Enigma; |
| 15 | 15 | ||
| 16 | import java.util.LinkedHashMap; | 16 | import java.util.LinkedHashMap; |
| 17 | import java.util.Locale; | 17 | import java.util.Locale; |
| 18 | import java.util.Map; | 18 | import java.util.Map; |
| 19 | 19 | ||
| 20 | public class CommandMain { | 20 | public class Main { |
| 21 | 21 | ||
| 22 | private static final Map<String, Command> COMMANDS = new LinkedHashMap<>(); | 22 | private static final Map<String, Command> COMMANDS = new LinkedHashMap<>(); |
| 23 | 23 | ||
| @@ -46,7 +46,7 @@ public class CommandMain { | |||
| 46 | } | 46 | } |
| 47 | } catch (CommandHelpException ex) { | 47 | } catch (CommandHelpException ex) { |
| 48 | System.err.println(ex.getMessage()); | 48 | System.err.println(ex.getMessage()); |
| 49 | System.out.println(String.format("%s - %s", Constants.NAME, Constants.VERSION)); | 49 | System.out.println(String.format("%s - %s", Enigma.NAME, Enigma.VERSION)); |
| 50 | System.out.println("Command " + ex.command.name + " has encountered an error! Usage:"); | 50 | System.out.println("Command " + ex.command.name + " has encountered an error! Usage:"); |
| 51 | printHelp(ex.command); | 51 | printHelp(ex.command); |
| 52 | System.exit(1); | 52 | System.exit(1); |
| @@ -58,9 +58,9 @@ public class CommandMain { | |||
| 58 | } | 58 | } |
| 59 | 59 | ||
| 60 | private static void printHelp() { | 60 | private static void printHelp() { |
| 61 | System.out.println(String.format("%s - %s", Constants.NAME, Constants.VERSION)); | 61 | System.out.println(String.format("%s - %s", Enigma.NAME, Enigma.VERSION)); |
| 62 | System.out.println("Usage:"); | 62 | System.out.println("Usage:"); |
| 63 | System.out.println("\tjava -cp enigma.jar cuchaz.enigma.CommandMain <command>"); | 63 | System.out.println("\tjava -cp enigma.jar cuchaz.enigma.command.CommandMain <command>"); |
| 64 | System.out.println("\twhere <command> is one of:"); | 64 | System.out.println("\twhere <command> is one of:"); |
| 65 | 65 | ||
| 66 | for (Command command : COMMANDS.values()) { | 66 | for (Command command : COMMANDS.values()) { |
diff --git a/src/main/java/cuchaz/enigma/command/MapSpecializedMethodsCommand.java b/enigma-cli/src/main/java/cuchaz/enigma/command/MapSpecializedMethodsCommand.java index eb8d5dc..292de19 100644 --- a/src/main/java/cuchaz/enigma/command/MapSpecializedMethodsCommand.java +++ b/enigma-cli/src/main/java/cuchaz/enigma/command/MapSpecializedMethodsCommand.java | |||
| @@ -4,10 +4,12 @@ import cuchaz.enigma.ProgressListener; | |||
| 4 | import cuchaz.enigma.analysis.ClassCache; | 4 | import cuchaz.enigma.analysis.ClassCache; |
| 5 | import cuchaz.enigma.analysis.index.BridgeMethodIndex; | 5 | import cuchaz.enigma.analysis.index.BridgeMethodIndex; |
| 6 | import cuchaz.enigma.analysis.index.JarIndex; | 6 | import cuchaz.enigma.analysis.index.JarIndex; |
| 7 | import cuchaz.enigma.throwables.MappingParseException; | 7 | import cuchaz.enigma.translation.mapping.serde.MappingFileNameFormat; |
| 8 | import cuchaz.enigma.translation.mapping.serde.MappingParseException; | ||
| 8 | import cuchaz.enigma.translation.MappingTranslator; | 9 | import cuchaz.enigma.translation.MappingTranslator; |
| 9 | import cuchaz.enigma.translation.Translator; | 10 | import cuchaz.enigma.translation.Translator; |
| 10 | import cuchaz.enigma.translation.mapping.*; | 11 | import cuchaz.enigma.translation.mapping.*; |
| 12 | import cuchaz.enigma.translation.mapping.serde.MappingSaveParameters; | ||
| 11 | import cuchaz.enigma.translation.mapping.tree.EntryTree; | 13 | import cuchaz.enigma.translation.mapping.tree.EntryTree; |
| 12 | import cuchaz.enigma.translation.mapping.tree.EntryTreeNode; | 14 | import cuchaz.enigma.translation.mapping.tree.EntryTreeNode; |
| 13 | import cuchaz.enigma.translation.mapping.tree.HashEntryTree; | 15 | import cuchaz.enigma.translation.mapping.tree.HashEntryTree; |
diff --git a/enigma-cli/src/main/java/cuchaz/enigma/command/MappingCommandsUtil.java b/enigma-cli/src/main/java/cuchaz/enigma/command/MappingCommandsUtil.java new file mode 100644 index 0000000..d365129 --- /dev/null +++ b/enigma-cli/src/main/java/cuchaz/enigma/command/MappingCommandsUtil.java | |||
| @@ -0,0 +1,87 @@ | |||
| 1 | package cuchaz.enigma.command; | ||
| 2 | |||
| 3 | import cuchaz.enigma.ProgressListener; | ||
| 4 | import cuchaz.enigma.translation.mapping.serde.MappingParseException; | ||
| 5 | import cuchaz.enigma.translation.mapping.EntryMapping; | ||
| 6 | import cuchaz.enigma.translation.mapping.serde.MappingSaveParameters; | ||
| 7 | import cuchaz.enigma.translation.mapping.serde.*; | ||
| 8 | import cuchaz.enigma.translation.mapping.serde.enigma.EnigmaMappingsReader; | ||
| 9 | import cuchaz.enigma.translation.mapping.serde.enigma.EnigmaMappingsWriter; | ||
| 10 | import cuchaz.enigma.translation.mapping.serde.tiny.TinyMappingsReader; | ||
| 11 | import cuchaz.enigma.translation.mapping.serde.tiny.TinyMappingsWriter; | ||
| 12 | import cuchaz.enigma.translation.mapping.serde.tinyv2.TinyV2Writer; | ||
| 13 | import cuchaz.enigma.translation.mapping.tree.EntryTree; | ||
| 14 | |||
| 15 | import java.io.IOException; | ||
| 16 | import java.nio.file.Files; | ||
| 17 | import java.nio.file.Path; | ||
| 18 | |||
| 19 | public final class MappingCommandsUtil { | ||
| 20 | private MappingCommandsUtil() {} | ||
| 21 | |||
| 22 | public static EntryTree<EntryMapping> read(String type, Path path, MappingSaveParameters saveParameters) throws MappingParseException, IOException { | ||
| 23 | if (type.equals("enigma")) { | ||
| 24 | return (Files.isDirectory(path) ? EnigmaMappingsReader.DIRECTORY : EnigmaMappingsReader.ZIP).read(path, ProgressListener.none(), saveParameters); | ||
| 25 | } | ||
| 26 | |||
| 27 | if (type.equals("tiny")) { | ||
| 28 | return TinyMappingsReader.INSTANCE.read(path, ProgressListener.none(), saveParameters); | ||
| 29 | } | ||
| 30 | |||
| 31 | MappingFormat format = null; | ||
| 32 | try { | ||
| 33 | format = MappingFormat.valueOf(type.toUpperCase()); | ||
| 34 | } catch (IllegalArgumentException ignored) { | ||
| 35 | if (type.equals("tinyv2")) { | ||
| 36 | format = MappingFormat.TINY_V2; | ||
| 37 | } | ||
| 38 | } | ||
| 39 | |||
| 40 | if (format != null) { | ||
| 41 | return format.getReader().read(path, ProgressListener.none(), saveParameters); | ||
| 42 | } | ||
| 43 | |||
| 44 | throw new IllegalArgumentException("no reader for " + type); | ||
| 45 | } | ||
| 46 | |||
| 47 | public static void write(EntryTree<EntryMapping> mappings, String type, Path path, MappingSaveParameters saveParameters) { | ||
| 48 | if (type.equals("enigma")) { | ||
| 49 | EnigmaMappingsWriter.DIRECTORY.write(mappings, path, ProgressListener.none(), saveParameters); | ||
| 50 | return; | ||
| 51 | } | ||
| 52 | |||
| 53 | if (type.startsWith("tinyv2:") || type.startsWith("tiny_v2:")) { | ||
| 54 | String[] split = type.split(":"); | ||
| 55 | |||
| 56 | if (split.length != 3) { | ||
| 57 | throw new IllegalArgumentException("specify column names as 'tinyv2:from_namespace:to_namespace'"); | ||
| 58 | } | ||
| 59 | |||
| 60 | new TinyV2Writer(split[1], split[2]).write(mappings, path, ProgressListener.none(), saveParameters); | ||
| 61 | return; | ||
| 62 | } | ||
| 63 | |||
| 64 | if (type.startsWith("tiny:")) { | ||
| 65 | String[] split = type.split(":"); | ||
| 66 | |||
| 67 | if (split.length != 3) { | ||
| 68 | throw new IllegalArgumentException("specify column names as 'tiny:from_column:to_column'"); | ||
| 69 | } | ||
| 70 | |||
| 71 | new TinyMappingsWriter(split[1], split[2]).write(mappings, path, ProgressListener.none(), saveParameters); | ||
| 72 | return; | ||
| 73 | } | ||
| 74 | |||
| 75 | MappingFormat format = null; | ||
| 76 | try { | ||
| 77 | format = MappingFormat.valueOf(type.toUpperCase()); | ||
| 78 | } catch (IllegalArgumentException ignored) {} | ||
| 79 | |||
| 80 | if (format != null) { | ||
| 81 | format.getWriter().write(mappings, path, ProgressListener.none(), saveParameters); | ||
| 82 | return; | ||
| 83 | } | ||
| 84 | |||
| 85 | throw new IllegalArgumentException("no writer for " + type); | ||
| 86 | } | ||
| 87 | } | ||
diff --git a/src/test/java/cuchaz/enigma/command/CheckMappingsCommandTest.java b/enigma-cli/src/test/java/cuchaz/enigma/command/CheckMappingsCommandTest.java index f3b9f85..a29bba4 100644 --- a/src/test/java/cuchaz/enigma/command/CheckMappingsCommandTest.java +++ b/enigma-cli/src/test/java/cuchaz/enigma/command/CheckMappingsCommandTest.java | |||
| @@ -5,16 +5,17 @@ import org.junit.Test; | |||
| 5 | import java.io.File; | 5 | import java.io.File; |
| 6 | 6 | ||
| 7 | public class CheckMappingsCommandTest { | 7 | public class CheckMappingsCommandTest { |
| 8 | private static final String PACKAGE_ACCESS = "../enigma/build/test-obf/packageAccess.jar"; | ||
| 8 | 9 | ||
| 9 | @Test(expected = IllegalStateException.class) | 10 | @Test(expected = IllegalStateException.class) |
| 10 | public void testWrong() throws Exception { | 11 | public void testWrong() throws Exception { |
| 11 | new CheckMappingsCommand().run(new File("build/test-obf/packageAccess.jar").getAbsolutePath(), new File("src/test/resources" + | 12 | new CheckMappingsCommand().run(new File(PACKAGE_ACCESS).getAbsolutePath(), new File("src/test/resources" + |
| 12 | "/packageAccess/wrongMappings").getAbsolutePath()); | 13 | "/packageAccess/wrongMappings").getAbsolutePath()); |
| 13 | } | 14 | } |
| 14 | 15 | ||
| 15 | @Test | 16 | @Test |
| 16 | public void testRight() throws Exception { | 17 | public void testRight() throws Exception { |
| 17 | new CheckMappingsCommand().run(new File("build/test-obf/packageAccess.jar").getAbsolutePath(), new File("src/test/resources" + | 18 | new CheckMappingsCommand().run(new File(PACKAGE_ACCESS).getAbsolutePath(), new File("src/test/resources" + |
| 18 | "/packageAccess/correctMappings").getAbsolutePath()); | 19 | "/packageAccess/correctMappings").getAbsolutePath()); |
| 19 | } | 20 | } |
| 20 | } | 21 | } |
diff --git a/src/test/resources/packageAccess/correctMappings/base/Base.mapping b/enigma-cli/src/test/resources/packageAccess/correctMappings/base/Base.mapping index 0a86def..0a86def 100644 --- a/src/test/resources/packageAccess/correctMappings/base/Base.mapping +++ b/enigma-cli/src/test/resources/packageAccess/correctMappings/base/Base.mapping | |||
diff --git a/src/test/resources/packageAccess/correctMappings/base/One.mapping b/enigma-cli/src/test/resources/packageAccess/correctMappings/base/One.mapping index dd4c208..dd4c208 100644 --- a/src/test/resources/packageAccess/correctMappings/base/One.mapping +++ b/enigma-cli/src/test/resources/packageAccess/correctMappings/base/One.mapping | |||
diff --git a/src/test/resources/packageAccess/correctMappings/two/Two.mapping b/enigma-cli/src/test/resources/packageAccess/correctMappings/two/Two.mapping index a179349..a179349 100644 --- a/src/test/resources/packageAccess/correctMappings/two/Two.mapping +++ b/enigma-cli/src/test/resources/packageAccess/correctMappings/two/Two.mapping | |||
diff --git a/src/test/resources/packageAccess/wrongMappings/base/Base.mapping b/enigma-cli/src/test/resources/packageAccess/wrongMappings/base/Base.mapping index 0a86def..0a86def 100644 --- a/src/test/resources/packageAccess/wrongMappings/base/Base.mapping +++ b/enigma-cli/src/test/resources/packageAccess/wrongMappings/base/Base.mapping | |||
diff --git a/src/test/resources/packageAccess/wrongMappings/one/One.mapping b/enigma-cli/src/test/resources/packageAccess/wrongMappings/one/One.mapping index 15b42cf..15b42cf 100644 --- a/src/test/resources/packageAccess/wrongMappings/one/One.mapping +++ b/enigma-cli/src/test/resources/packageAccess/wrongMappings/one/One.mapping | |||
diff --git a/src/test/resources/packageAccess/wrongMappings/two/Two.mapping b/enigma-cli/src/test/resources/packageAccess/wrongMappings/two/Two.mapping index a179349..a179349 100644 --- a/src/test/resources/packageAccess/wrongMappings/two/Two.mapping +++ b/enigma-cli/src/test/resources/packageAccess/wrongMappings/two/Two.mapping | |||
diff --git a/enigma-server/build.gradle b/enigma-server/build.gradle new file mode 100644 index 0000000..bf72b18 --- /dev/null +++ b/enigma-server/build.gradle | |||
| @@ -0,0 +1,6 @@ | |||
| 1 | dependencies { | ||
| 2 | implementation project(':enigma') | ||
| 3 | implementation 'net.sf.jopt-simple:jopt-simple:6.0-alpha-3' | ||
| 4 | } | ||
| 5 | |||
| 6 | jar.manifest.attributes 'Main-Class': 'cuchaz.enigma.network.DedicatedEnigmaServer' | ||
diff --git a/docs/protocol.md b/enigma-server/docs/protocol.md index c14ecb8..c14ecb8 100644 --- a/docs/protocol.md +++ b/enigma-server/docs/protocol.md | |||
diff --git a/enigma-server/src/main/java/cuchaz/enigma/network/ClientPacketHandler.java b/enigma-server/src/main/java/cuchaz/enigma/network/ClientPacketHandler.java new file mode 100644 index 0000000..720744b --- /dev/null +++ b/enigma-server/src/main/java/cuchaz/enigma/network/ClientPacketHandler.java | |||
| @@ -0,0 +1,29 @@ | |||
| 1 | package cuchaz.enigma.network; | ||
| 2 | |||
| 3 | import cuchaz.enigma.analysis.EntryReference; | ||
| 4 | import cuchaz.enigma.translation.mapping.EntryMapping; | ||
| 5 | import cuchaz.enigma.translation.mapping.tree.EntryTree; | ||
| 6 | import cuchaz.enigma.network.packet.Packet; | ||
| 7 | import cuchaz.enigma.translation.representation.entry.Entry; | ||
| 8 | |||
| 9 | import java.util.List; | ||
| 10 | |||
| 11 | public interface ClientPacketHandler { | ||
| 12 | void openMappings(EntryTree<EntryMapping> mappings); | ||
| 13 | |||
| 14 | void rename(EntryReference<Entry<?>, Entry<?>> reference, String newName, boolean refreshClassTree, boolean jumpToReference); | ||
| 15 | |||
| 16 | void removeMapping(EntryReference<Entry<?>, Entry<?>> reference, boolean jumpToReference); | ||
| 17 | |||
| 18 | void changeDocs(EntryReference<Entry<?>, Entry<?>> reference, String updatedDocs, boolean jumpToReference); | ||
| 19 | |||
| 20 | void markAsDeobfuscated(EntryReference<Entry<?>, Entry<?>> reference, boolean jumpToReference); | ||
| 21 | |||
| 22 | void disconnectIfConnected(String reason); | ||
| 23 | |||
| 24 | void sendPacket(Packet<ServerPacketHandler> packet); | ||
| 25 | |||
| 26 | void addMessage(Message message); | ||
| 27 | |||
| 28 | void updateUserList(List<String> users); | ||
| 29 | } | ||
diff --git a/src/main/java/cuchaz/enigma/network/DedicatedEnigmaServer.java b/enigma-server/src/main/java/cuchaz/enigma/network/DedicatedEnigmaServer.java index 2cfe823..924302f 100644 --- a/src/main/java/cuchaz/enigma/network/DedicatedEnigmaServer.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/DedicatedEnigmaServer.java | |||
| @@ -2,13 +2,14 @@ package cuchaz.enigma.network; | |||
| 2 | 2 | ||
| 3 | import com.google.common.io.MoreFiles; | 3 | import com.google.common.io.MoreFiles; |
| 4 | import cuchaz.enigma.*; | 4 | import cuchaz.enigma.*; |
| 5 | import cuchaz.enigma.throwables.MappingParseException; | 5 | import cuchaz.enigma.translation.mapping.serde.MappingParseException; |
| 6 | import cuchaz.enigma.translation.mapping.EntryRemapper; | 6 | import cuchaz.enigma.translation.mapping.EntryRemapper; |
| 7 | import cuchaz.enigma.translation.mapping.serde.MappingFormat; | 7 | import cuchaz.enigma.translation.mapping.serde.MappingFormat; |
| 8 | import cuchaz.enigma.utils.Utils; | 8 | import cuchaz.enigma.utils.Utils; |
| 9 | import joptsimple.OptionParser; | 9 | import joptsimple.OptionParser; |
| 10 | import joptsimple.OptionSet; | 10 | import joptsimple.OptionSet; |
| 11 | import joptsimple.OptionSpec; | 11 | import joptsimple.OptionSpec; |
| 12 | import joptsimple.ValueConverter; | ||
| 12 | 13 | ||
| 13 | import java.io.IOException; | 14 | import java.io.IOException; |
| 14 | import java.io.PrintWriter; | 15 | import java.io.PrintWriter; |
| @@ -62,16 +63,16 @@ public class DedicatedEnigmaServer extends EnigmaServer { | |||
| 62 | OptionSpec<Path> jarOpt = parser.accepts("jar", "Jar file to open at startup") | 63 | OptionSpec<Path> jarOpt = parser.accepts("jar", "Jar file to open at startup") |
| 63 | .withRequiredArg() | 64 | .withRequiredArg() |
| 64 | .required() | 65 | .required() |
| 65 | .withValuesConvertedBy(Main.PathConverter.INSTANCE); | 66 | .withValuesConvertedBy(PathConverter.INSTANCE); |
| 66 | 67 | ||
| 67 | OptionSpec<Path> mappingsOpt = parser.accepts("mappings", "Mappings file to open at startup") | 68 | OptionSpec<Path> mappingsOpt = parser.accepts("mappings", "Mappings file to open at startup") |
| 68 | .withRequiredArg() | 69 | .withRequiredArg() |
| 69 | .required() | 70 | .required() |
| 70 | .withValuesConvertedBy(Main.PathConverter.INSTANCE); | 71 | .withValuesConvertedBy(PathConverter.INSTANCE); |
| 71 | 72 | ||
| 72 | OptionSpec<Path> profileOpt = parser.accepts("profile", "Profile json to apply at startup") | 73 | OptionSpec<Path> profileOpt = parser.accepts("profile", "Profile json to apply at startup") |
| 73 | .withRequiredArg() | 74 | .withRequiredArg() |
| 74 | .withValuesConvertedBy(Main.PathConverter.INSTANCE); | 75 | .withValuesConvertedBy(PathConverter.INSTANCE); |
| 75 | 76 | ||
| 76 | OptionSpec<Integer> portOpt = parser.accepts("port", "Port to run the server on") | 77 | OptionSpec<Integer> portOpt = parser.accepts("port", "Port to run the server on") |
| 77 | .withOptionalArg() | 78 | .withOptionalArg() |
| @@ -84,7 +85,7 @@ public class DedicatedEnigmaServer extends EnigmaServer { | |||
| 84 | 85 | ||
| 85 | OptionSpec<Path> logFileOpt = parser.accepts("log", "The log file to write to") | 86 | OptionSpec<Path> logFileOpt = parser.accepts("log", "The log file to write to") |
| 86 | .withRequiredArg() | 87 | .withRequiredArg() |
| 87 | .withValuesConvertedBy(Main.PathConverter.INSTANCE) | 88 | .withValuesConvertedBy(PathConverter.INSTANCE) |
| 88 | .defaultsTo(Paths.get("log.txt")); | 89 | .defaultsTo(Paths.get("log.txt")); |
| 89 | 90 | ||
| 90 | OptionSet parsedArgs = parser.parse(args); | 91 | OptionSet parsedArgs = parser.parse(args); |
| @@ -161,4 +162,39 @@ public class DedicatedEnigmaServer extends EnigmaServer { | |||
| 161 | mappingFormat.write(getMappings().getObfToDeobf(), getMappings().takeMappingDelta(), mappingsFile, ProgressListener.none(), profile.getMappingSaveParameters()); | 162 | mappingFormat.write(getMappings().getObfToDeobf(), getMappings().takeMappingDelta(), mappingsFile, ProgressListener.none(), profile.getMappingSaveParameters()); |
| 162 | log.flush(); | 163 | log.flush(); |
| 163 | } | 164 | } |
| 165 | |||
| 166 | public static class PathConverter implements ValueConverter<Path> { | ||
| 167 | public static final ValueConverter<Path> INSTANCE = new PathConverter(); | ||
| 168 | |||
| 169 | PathConverter() { | ||
| 170 | } | ||
| 171 | |||
| 172 | @Override | ||
| 173 | public Path convert(String path) { | ||
| 174 | // expand ~ to the home dir | ||
| 175 | if (path.startsWith("~")) { | ||
| 176 | // get the home dir | ||
| 177 | Path dirHome = Paths.get(System.getProperty("user.home")); | ||
| 178 | |||
| 179 | // is the path just ~/ or is it ~user/ ? | ||
| 180 | if (path.startsWith("~/")) { | ||
| 181 | return dirHome.resolve(path.substring(2)); | ||
| 182 | } else { | ||
| 183 | return dirHome.getParent().resolve(path.substring(1)); | ||
| 184 | } | ||
| 185 | } | ||
| 186 | |||
| 187 | return Paths.get(path); | ||
| 188 | } | ||
| 189 | |||
| 190 | @Override | ||
| 191 | public Class<? extends Path> valueType() { | ||
| 192 | return Path.class; | ||
| 193 | } | ||
| 194 | |||
| 195 | @Override | ||
| 196 | public String valuePattern() { | ||
| 197 | return "path"; | ||
| 198 | } | ||
| 199 | } | ||
| 164 | } | 200 | } |
diff --git a/src/main/java/cuchaz/enigma/network/EnigmaClient.java b/enigma-server/src/main/java/cuchaz/enigma/network/EnigmaClient.java index bfa53d7..71bd011 100644 --- a/src/main/java/cuchaz/enigma/network/EnigmaClient.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/EnigmaClient.java | |||
| @@ -1,30 +1,23 @@ | |||
| 1 | package cuchaz.enigma.network; | 1 | package cuchaz.enigma.network; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.gui.GuiController; | ||
| 4 | import cuchaz.enigma.network.packet.LoginC2SPacket; | ||
| 5 | import cuchaz.enigma.network.packet.Packet; | 3 | import cuchaz.enigma.network.packet.Packet; |
| 6 | import cuchaz.enigma.network.packet.PacketRegistry; | 4 | import cuchaz.enigma.network.packet.PacketRegistry; |
| 7 | 5 | ||
| 8 | import javax.swing.SwingUtilities; | 6 | import javax.swing.*; |
| 9 | import java.io.DataInput; | 7 | import java.io.*; |
| 10 | import java.io.DataInputStream; | ||
| 11 | import java.io.DataOutput; | ||
| 12 | import java.io.DataOutputStream; | ||
| 13 | import java.io.EOFException; | ||
| 14 | import java.io.IOException; | ||
| 15 | import java.net.Socket; | 8 | import java.net.Socket; |
| 16 | import java.net.SocketException; | 9 | import java.net.SocketException; |
| 17 | 10 | ||
| 18 | public class EnigmaClient { | 11 | public class EnigmaClient { |
| 19 | 12 | ||
| 20 | private final GuiController controller; | 13 | private final ClientPacketHandler controller; |
| 21 | 14 | ||
| 22 | private final String ip; | 15 | private final String ip; |
| 23 | private final int port; | 16 | private final int port; |
| 24 | private Socket socket; | 17 | private Socket socket; |
| 25 | private DataOutput output; | 18 | private DataOutput output; |
| 26 | 19 | ||
| 27 | public EnigmaClient(GuiController controller, String ip, int port) { | 20 | public EnigmaClient(ClientPacketHandler controller, String ip, int port) { |
| 28 | this.controller = controller; | 21 | this.controller = controller; |
| 29 | this.ip = ip; | 22 | this.ip = ip; |
| 30 | this.port = port; | 23 | this.port = port; |
| @@ -43,7 +36,7 @@ public class EnigmaClient { | |||
| 43 | } catch (EOFException | SocketException e) { | 36 | } catch (EOFException | SocketException e) { |
| 44 | break; | 37 | break; |
| 45 | } | 38 | } |
| 46 | Packet<GuiController> packet = PacketRegistry.createS2CPacket(packetId); | 39 | Packet<ClientPacketHandler> packet = PacketRegistry.createS2CPacket(packetId); |
| 47 | if (packet == null) { | 40 | if (packet == null) { |
| 48 | throw new IOException("Received invalid packet id " + packetId); | 41 | throw new IOException("Received invalid packet id " + packetId); |
| 49 | } | 42 | } |
diff --git a/src/main/java/cuchaz/enigma/network/EnigmaServer.java b/enigma-server/src/main/java/cuchaz/enigma/network/EnigmaServer.java index b0e15a3..6027a6b 100644 --- a/src/main/java/cuchaz/enigma/network/EnigmaServer.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/EnigmaServer.java | |||
| @@ -1,6 +1,5 @@ | |||
| 1 | package cuchaz.enigma.network; | 1 | package cuchaz.enigma.network; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.gui.GuiController; | ||
| 4 | import cuchaz.enigma.network.packet.KickS2CPacket; | 3 | import cuchaz.enigma.network.packet.KickS2CPacket; |
| 5 | import cuchaz.enigma.network.packet.MessageS2CPacket; | 4 | import cuchaz.enigma.network.packet.MessageS2CPacket; |
| 6 | import cuchaz.enigma.network.packet.Packet; | 5 | import cuchaz.enigma.network.packet.Packet; |
| @@ -11,7 +10,6 @@ import cuchaz.enigma.network.packet.UserListS2CPacket; | |||
| 11 | import cuchaz.enigma.translation.mapping.EntryMapping; | 10 | import cuchaz.enigma.translation.mapping.EntryMapping; |
| 12 | import cuchaz.enigma.translation.mapping.EntryRemapper; | 11 | import cuchaz.enigma.translation.mapping.EntryRemapper; |
| 13 | import cuchaz.enigma.translation.representation.entry.Entry; | 12 | import cuchaz.enigma.translation.representation.entry.Entry; |
| 14 | import cuchaz.enigma.utils.Message; | ||
| 15 | 13 | ||
| 16 | import java.io.DataInput; | 14 | import java.io.DataInput; |
| 17 | import java.io.DataInputStream; | 15 | import java.io.DataInputStream; |
| @@ -175,7 +173,7 @@ public abstract class EnigmaServer { | |||
| 175 | return usernames.get(client); | 173 | return usernames.get(client); |
| 176 | } | 174 | } |
| 177 | 175 | ||
| 178 | public void sendPacket(Socket client, Packet<GuiController> packet) { | 176 | public void sendPacket(Socket client, Packet<ClientPacketHandler> packet) { |
| 179 | if (!client.isClosed()) { | 177 | if (!client.isClosed()) { |
| 180 | int packetId = PacketRegistry.getS2CId(packet); | 178 | int packetId = PacketRegistry.getS2CId(packet); |
| 181 | try { | 179 | try { |
| @@ -191,13 +189,13 @@ public abstract class EnigmaServer { | |||
| 191 | } | 189 | } |
| 192 | } | 190 | } |
| 193 | 191 | ||
| 194 | public void sendToAll(Packet<GuiController> packet) { | 192 | public void sendToAll(Packet<ClientPacketHandler> packet) { |
| 195 | for (Socket client : clients) { | 193 | for (Socket client : clients) { |
| 196 | sendPacket(client, packet); | 194 | sendPacket(client, packet); |
| 197 | } | 195 | } |
| 198 | } | 196 | } |
| 199 | 197 | ||
| 200 | public void sendToAllExcept(Socket excluded, Packet<GuiController> packet) { | 198 | public void sendToAllExcept(Socket excluded, Packet<ClientPacketHandler> packet) { |
| 201 | for (Socket client : clients) { | 199 | for (Socket client : clients) { |
| 202 | if (client != excluded) { | 200 | if (client != excluded) { |
| 203 | sendPacket(client, packet); | 201 | sendPacket(client, packet); |
diff --git a/src/main/java/cuchaz/enigma/network/IntegratedEnigmaServer.java b/enigma-server/src/main/java/cuchaz/enigma/network/IntegratedEnigmaServer.java index 21c6825..21c6825 100644 --- a/src/main/java/cuchaz/enigma/network/IntegratedEnigmaServer.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/IntegratedEnigmaServer.java | |||
diff --git a/src/main/java/cuchaz/enigma/utils/Message.java b/enigma-server/src/main/java/cuchaz/enigma/network/Message.java index d7c5f23..c157838 100644 --- a/src/main/java/cuchaz/enigma/utils/Message.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/Message.java | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | package cuchaz.enigma.utils; | 1 | package cuchaz.enigma.network; |
| 2 | 2 | ||
| 3 | import java.io.DataInput; | 3 | import java.io.DataInput; |
| 4 | import java.io.DataOutput; | 4 | import java.io.DataOutput; |
| @@ -7,6 +7,7 @@ import java.util.Objects; | |||
| 7 | 7 | ||
| 8 | import cuchaz.enigma.network.packet.PacketHelper; | 8 | import cuchaz.enigma.network.packet.PacketHelper; |
| 9 | import cuchaz.enigma.translation.representation.entry.Entry; | 9 | import cuchaz.enigma.translation.representation.entry.Entry; |
| 10 | import cuchaz.enigma.utils.I18n; | ||
| 10 | 11 | ||
| 11 | public abstract class Message { | 12 | public abstract class Message { |
| 12 | 13 | ||
diff --git a/src/main/java/cuchaz/enigma/network/ServerPacketHandler.java b/enigma-server/src/main/java/cuchaz/enigma/network/ServerPacketHandler.java index 8618553..8618553 100644 --- a/src/main/java/cuchaz/enigma/network/ServerPacketHandler.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/ServerPacketHandler.java | |||
diff --git a/src/main/java/cuchaz/enigma/network/packet/ChangeDocsC2SPacket.java b/enigma-server/src/main/java/cuchaz/enigma/network/packet/ChangeDocsC2SPacket.java index 4d5d86f..1b52cf1 100644 --- a/src/main/java/cuchaz/enigma/network/packet/ChangeDocsC2SPacket.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/packet/ChangeDocsC2SPacket.java | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | package cuchaz.enigma.network.packet; | 1 | package cuchaz.enigma.network.packet; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.translation.mapping.EntryMapping; | ||
| 3 | import cuchaz.enigma.network.EnigmaServer; | 4 | import cuchaz.enigma.network.EnigmaServer; |
| 5 | import cuchaz.enigma.network.Message; | ||
| 4 | import cuchaz.enigma.network.ServerPacketHandler; | 6 | import cuchaz.enigma.network.ServerPacketHandler; |
| 5 | import cuchaz.enigma.translation.mapping.EntryMapping; | ||
| 6 | import cuchaz.enigma.translation.representation.entry.Entry; | 7 | import cuchaz.enigma.translation.representation.entry.Entry; |
| 7 | import cuchaz.enigma.utils.Message; | ||
| 8 | import cuchaz.enigma.utils.Utils; | 8 | import cuchaz.enigma.utils.Utils; |
| 9 | 9 | ||
| 10 | import java.io.DataInput; | 10 | import java.io.DataInput; |
diff --git a/src/main/java/cuchaz/enigma/network/packet/ChangeDocsS2CPacket.java b/enigma-server/src/main/java/cuchaz/enigma/network/packet/ChangeDocsS2CPacket.java index bf5b7cb..12a3025 100644 --- a/src/main/java/cuchaz/enigma/network/packet/ChangeDocsS2CPacket.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/packet/ChangeDocsS2CPacket.java | |||
| @@ -1,14 +1,14 @@ | |||
| 1 | package cuchaz.enigma.network.packet; | 1 | package cuchaz.enigma.network.packet; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.analysis.EntryReference; | 3 | import cuchaz.enigma.analysis.EntryReference; |
| 4 | import cuchaz.enigma.gui.GuiController; | 4 | import cuchaz.enigma.network.ClientPacketHandler; |
| 5 | import cuchaz.enigma.translation.representation.entry.Entry; | 5 | import cuchaz.enigma.translation.representation.entry.Entry; |
| 6 | 6 | ||
| 7 | import java.io.DataInput; | 7 | import java.io.DataInput; |
| 8 | import java.io.DataOutput; | 8 | import java.io.DataOutput; |
| 9 | import java.io.IOException; | 9 | import java.io.IOException; |
| 10 | 10 | ||
| 11 | public class ChangeDocsS2CPacket implements Packet<GuiController> { | 11 | public class ChangeDocsS2CPacket implements Packet<ClientPacketHandler> { |
| 12 | private int syncId; | 12 | private int syncId; |
| 13 | private Entry<?> entry; | 13 | private Entry<?> entry; |
| 14 | private String newDocs; | 14 | private String newDocs; |
| @@ -37,7 +37,7 @@ public class ChangeDocsS2CPacket implements Packet<GuiController> { | |||
| 37 | } | 37 | } |
| 38 | 38 | ||
| 39 | @Override | 39 | @Override |
| 40 | public void handle(GuiController controller) { | 40 | public void handle(ClientPacketHandler controller) { |
| 41 | controller.changeDocs(new EntryReference<>(entry, entry.getName()), newDocs, false); | 41 | controller.changeDocs(new EntryReference<>(entry, entry.getName()), newDocs, false); |
| 42 | controller.sendPacket(new ConfirmChangeC2SPacket(syncId)); | 42 | controller.sendPacket(new ConfirmChangeC2SPacket(syncId)); |
| 43 | } | 43 | } |
diff --git a/src/main/java/cuchaz/enigma/network/packet/ConfirmChangeC2SPacket.java b/enigma-server/src/main/java/cuchaz/enigma/network/packet/ConfirmChangeC2SPacket.java index 78ef964..78ef964 100644 --- a/src/main/java/cuchaz/enigma/network/packet/ConfirmChangeC2SPacket.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/packet/ConfirmChangeC2SPacket.java | |||
diff --git a/src/main/java/cuchaz/enigma/network/packet/KickS2CPacket.java b/enigma-server/src/main/java/cuchaz/enigma/network/packet/KickS2CPacket.java index bd007d3..9a112a8 100644 --- a/src/main/java/cuchaz/enigma/network/packet/KickS2CPacket.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/packet/KickS2CPacket.java | |||
| @@ -1,12 +1,12 @@ | |||
| 1 | package cuchaz.enigma.network.packet; | 1 | package cuchaz.enigma.network.packet; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.gui.GuiController; | 3 | import cuchaz.enigma.network.ClientPacketHandler; |
| 4 | 4 | ||
| 5 | import java.io.DataInput; | 5 | import java.io.DataInput; |
| 6 | import java.io.DataOutput; | 6 | import java.io.DataOutput; |
| 7 | import java.io.IOException; | 7 | import java.io.IOException; |
| 8 | 8 | ||
| 9 | public class KickS2CPacket implements Packet<GuiController> { | 9 | public class KickS2CPacket implements Packet<ClientPacketHandler> { |
| 10 | private String reason; | 10 | private String reason; |
| 11 | 11 | ||
| 12 | KickS2CPacket() { | 12 | KickS2CPacket() { |
| @@ -27,7 +27,7 @@ public class KickS2CPacket implements Packet<GuiController> { | |||
| 27 | } | 27 | } |
| 28 | 28 | ||
| 29 | @Override | 29 | @Override |
| 30 | public void handle(GuiController controller) { | 30 | public void handle(ClientPacketHandler controller) { |
| 31 | controller.disconnectIfConnected(reason); | 31 | controller.disconnectIfConnected(reason); |
| 32 | } | 32 | } |
| 33 | } | 33 | } |
diff --git a/src/main/java/cuchaz/enigma/network/packet/LoginC2SPacket.java b/enigma-server/src/main/java/cuchaz/enigma/network/packet/LoginC2SPacket.java index 722cbbf..da0f44a 100644 --- a/src/main/java/cuchaz/enigma/network/packet/LoginC2SPacket.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/packet/LoginC2SPacket.java | |||
| @@ -2,7 +2,7 @@ package cuchaz.enigma.network.packet; | |||
| 2 | 2 | ||
| 3 | import cuchaz.enigma.network.EnigmaServer; | 3 | import cuchaz.enigma.network.EnigmaServer; |
| 4 | import cuchaz.enigma.network.ServerPacketHandler; | 4 | import cuchaz.enigma.network.ServerPacketHandler; |
| 5 | import cuchaz.enigma.utils.Message; | 5 | import cuchaz.enigma.network.Message; |
| 6 | 6 | ||
| 7 | import java.io.DataInput; | 7 | import java.io.DataInput; |
| 8 | import java.io.DataOutput; | 8 | import java.io.DataOutput; |
diff --git a/src/main/java/cuchaz/enigma/network/packet/MarkDeobfuscatedC2SPacket.java b/enigma-server/src/main/java/cuchaz/enigma/network/packet/MarkDeobfuscatedC2SPacket.java index 98d20d9..a41c620 100644 --- a/src/main/java/cuchaz/enigma/network/packet/MarkDeobfuscatedC2SPacket.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/packet/MarkDeobfuscatedC2SPacket.java | |||
| @@ -3,7 +3,7 @@ package cuchaz.enigma.network.packet; | |||
| 3 | import cuchaz.enigma.network.ServerPacketHandler; | 3 | import cuchaz.enigma.network.ServerPacketHandler; |
| 4 | import cuchaz.enigma.translation.mapping.EntryMapping; | 4 | import cuchaz.enigma.translation.mapping.EntryMapping; |
| 5 | import cuchaz.enigma.translation.representation.entry.Entry; | 5 | import cuchaz.enigma.translation.representation.entry.Entry; |
| 6 | import cuchaz.enigma.utils.Message; | 6 | import cuchaz.enigma.network.Message; |
| 7 | 7 | ||
| 8 | import java.io.DataInput; | 8 | import java.io.DataInput; |
| 9 | import java.io.DataOutput; | 9 | import java.io.DataOutput; |
diff --git a/src/main/java/cuchaz/enigma/network/packet/MarkDeobfuscatedS2CPacket.java b/enigma-server/src/main/java/cuchaz/enigma/network/packet/MarkDeobfuscatedS2CPacket.java index b7d6eda..7504430 100644 --- a/src/main/java/cuchaz/enigma/network/packet/MarkDeobfuscatedS2CPacket.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/packet/MarkDeobfuscatedS2CPacket.java | |||
| @@ -1,14 +1,14 @@ | |||
| 1 | package cuchaz.enigma.network.packet; | 1 | package cuchaz.enigma.network.packet; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.analysis.EntryReference; | 3 | import cuchaz.enigma.analysis.EntryReference; |
| 4 | import cuchaz.enigma.gui.GuiController; | 4 | import cuchaz.enigma.network.ClientPacketHandler; |
| 5 | import cuchaz.enigma.translation.representation.entry.Entry; | 5 | import cuchaz.enigma.translation.representation.entry.Entry; |
| 6 | 6 | ||
| 7 | import java.io.DataInput; | 7 | import java.io.DataInput; |
| 8 | import java.io.DataOutput; | 8 | import java.io.DataOutput; |
| 9 | import java.io.IOException; | 9 | import java.io.IOException; |
| 10 | 10 | ||
| 11 | public class MarkDeobfuscatedS2CPacket implements Packet<GuiController> { | 11 | public class MarkDeobfuscatedS2CPacket implements Packet<ClientPacketHandler> { |
| 12 | private int syncId; | 12 | private int syncId; |
| 13 | private Entry<?> entry; | 13 | private Entry<?> entry; |
| 14 | 14 | ||
| @@ -33,7 +33,7 @@ public class MarkDeobfuscatedS2CPacket implements Packet<GuiController> { | |||
| 33 | } | 33 | } |
| 34 | 34 | ||
| 35 | @Override | 35 | @Override |
| 36 | public void handle(GuiController controller) { | 36 | public void handle(ClientPacketHandler controller) { |
| 37 | controller.markAsDeobfuscated(new EntryReference<>(entry, entry.getName()), false); | 37 | controller.markAsDeobfuscated(new EntryReference<>(entry, entry.getName()), false); |
| 38 | controller.sendPacket(new ConfirmChangeC2SPacket(syncId)); | 38 | controller.sendPacket(new ConfirmChangeC2SPacket(syncId)); |
| 39 | } | 39 | } |
diff --git a/src/main/java/cuchaz/enigma/network/packet/MessageC2SPacket.java b/enigma-server/src/main/java/cuchaz/enigma/network/packet/MessageC2SPacket.java index b8e0f14..3bc09e7 100644 --- a/src/main/java/cuchaz/enigma/network/packet/MessageC2SPacket.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/packet/MessageC2SPacket.java | |||
| @@ -5,7 +5,7 @@ import java.io.DataOutput; | |||
| 5 | import java.io.IOException; | 5 | import java.io.IOException; |
| 6 | 6 | ||
| 7 | import cuchaz.enigma.network.ServerPacketHandler; | 7 | import cuchaz.enigma.network.ServerPacketHandler; |
| 8 | import cuchaz.enigma.utils.Message; | 8 | import cuchaz.enigma.network.Message; |
| 9 | 9 | ||
| 10 | public class MessageC2SPacket implements Packet<ServerPacketHandler> { | 10 | public class MessageC2SPacket implements Packet<ServerPacketHandler> { |
| 11 | 11 | ||
diff --git a/src/main/java/cuchaz/enigma/network/packet/MessageS2CPacket.java b/enigma-server/src/main/java/cuchaz/enigma/network/packet/MessageS2CPacket.java index edeaae0..2b07968 100644 --- a/src/main/java/cuchaz/enigma/network/packet/MessageS2CPacket.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/packet/MessageS2CPacket.java | |||
| @@ -4,10 +4,10 @@ import java.io.DataInput; | |||
| 4 | import java.io.DataOutput; | 4 | import java.io.DataOutput; |
| 5 | import java.io.IOException; | 5 | import java.io.IOException; |
| 6 | 6 | ||
| 7 | import cuchaz.enigma.gui.GuiController; | 7 | import cuchaz.enigma.network.ClientPacketHandler; |
| 8 | import cuchaz.enigma.utils.Message; | 8 | import cuchaz.enigma.network.Message; |
| 9 | 9 | ||
| 10 | public class MessageS2CPacket implements Packet<GuiController> { | 10 | public class MessageS2CPacket implements Packet<ClientPacketHandler> { |
| 11 | 11 | ||
| 12 | private Message message; | 12 | private Message message; |
| 13 | 13 | ||
| @@ -29,7 +29,7 @@ public class MessageS2CPacket implements Packet<GuiController> { | |||
| 29 | } | 29 | } |
| 30 | 30 | ||
| 31 | @Override | 31 | @Override |
| 32 | public void handle(GuiController handler) { | 32 | public void handle(ClientPacketHandler handler) { |
| 33 | handler.addMessage(message); | 33 | handler.addMessage(message); |
| 34 | } | 34 | } |
| 35 | 35 | ||
diff --git a/src/main/java/cuchaz/enigma/network/packet/Packet.java b/enigma-server/src/main/java/cuchaz/enigma/network/packet/Packet.java index 2f16dfb..2f16dfb 100644 --- a/src/main/java/cuchaz/enigma/network/packet/Packet.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/packet/Packet.java | |||
diff --git a/src/main/java/cuchaz/enigma/network/packet/PacketHelper.java b/enigma-server/src/main/java/cuchaz/enigma/network/packet/PacketHelper.java index 464606e..464606e 100644 --- a/src/main/java/cuchaz/enigma/network/packet/PacketHelper.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/packet/PacketHelper.java | |||
diff --git a/src/main/java/cuchaz/enigma/network/packet/PacketRegistry.java b/enigma-server/src/main/java/cuchaz/enigma/network/packet/PacketRegistry.java index ba5d9de..3b8af81 100644 --- a/src/main/java/cuchaz/enigma/network/packet/PacketRegistry.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/packet/PacketRegistry.java | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | package cuchaz.enigma.network.packet; | 1 | package cuchaz.enigma.network.packet; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.gui.GuiController; | 3 | import cuchaz.enigma.network.ClientPacketHandler; |
| 4 | import cuchaz.enigma.network.ServerPacketHandler; | 4 | import cuchaz.enigma.network.ServerPacketHandler; |
| 5 | 5 | ||
| 6 | import java.util.HashMap; | 6 | import java.util.HashMap; |
| @@ -11,15 +11,15 @@ public class PacketRegistry { | |||
| 11 | 11 | ||
| 12 | private static final Map<Class<? extends Packet<ServerPacketHandler>>, Integer> c2sPacketIds = new HashMap<>(); | 12 | private static final Map<Class<? extends Packet<ServerPacketHandler>>, Integer> c2sPacketIds = new HashMap<>(); |
| 13 | private static final Map<Integer, Supplier<? extends Packet<ServerPacketHandler>>> c2sPacketCreators = new HashMap<>(); | 13 | private static final Map<Integer, Supplier<? extends Packet<ServerPacketHandler>>> c2sPacketCreators = new HashMap<>(); |
| 14 | private static final Map<Class<? extends Packet<GuiController>>, Integer> s2cPacketIds = new HashMap<>(); | 14 | private static final Map<Class<? extends Packet<ClientPacketHandler>>, Integer> s2cPacketIds = new HashMap<>(); |
| 15 | private static final Map<Integer, Supplier<? extends Packet<GuiController>>> s2cPacketCreators = new HashMap<>(); | 15 | private static final Map<Integer, Supplier<? extends Packet<ClientPacketHandler>>> s2cPacketCreators = new HashMap<>(); |
| 16 | 16 | ||
| 17 | private static <T extends Packet<ServerPacketHandler>> void registerC2S(int id, Class<T> clazz, Supplier<T> creator) { | 17 | private static <T extends Packet<ServerPacketHandler>> void registerC2S(int id, Class<T> clazz, Supplier<T> creator) { |
| 18 | c2sPacketIds.put(clazz, id); | 18 | c2sPacketIds.put(clazz, id); |
| 19 | c2sPacketCreators.put(id, creator); | 19 | c2sPacketCreators.put(id, creator); |
| 20 | } | 20 | } |
| 21 | 21 | ||
| 22 | private static <T extends Packet<GuiController>> void registerS2C(int id, Class<T> clazz, Supplier<T> creator) { | 22 | private static <T extends Packet<ClientPacketHandler>> void registerS2C(int id, Class<T> clazz, Supplier<T> creator) { |
| 23 | s2cPacketIds.put(clazz, id); | 23 | s2cPacketIds.put(clazz, id); |
| 24 | s2cPacketCreators.put(id, creator); | 24 | s2cPacketCreators.put(id, creator); |
| 25 | } | 25 | } |
| @@ -52,12 +52,12 @@ public class PacketRegistry { | |||
| 52 | return creator == null ? null : creator.get(); | 52 | return creator == null ? null : creator.get(); |
| 53 | } | 53 | } |
| 54 | 54 | ||
| 55 | public static int getS2CId(Packet<GuiController> packet) { | 55 | public static int getS2CId(Packet<ClientPacketHandler> packet) { |
| 56 | return s2cPacketIds.get(packet.getClass()); | 56 | return s2cPacketIds.get(packet.getClass()); |
| 57 | } | 57 | } |
| 58 | 58 | ||
| 59 | public static Packet<GuiController> createS2CPacket(int id) { | 59 | public static Packet<ClientPacketHandler> createS2CPacket(int id) { |
| 60 | Supplier<? extends Packet<GuiController>> creator = s2cPacketCreators.get(id); | 60 | Supplier<? extends Packet<ClientPacketHandler>> creator = s2cPacketCreators.get(id); |
| 61 | return creator == null ? null : creator.get(); | 61 | return creator == null ? null : creator.get(); |
| 62 | } | 62 | } |
| 63 | 63 | ||
diff --git a/src/main/java/cuchaz/enigma/network/packet/RemoveMappingC2SPacket.java b/enigma-server/src/main/java/cuchaz/enigma/network/packet/RemoveMappingC2SPacket.java index a3f3d91..3f85228 100644 --- a/src/main/java/cuchaz/enigma/network/packet/RemoveMappingC2SPacket.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/packet/RemoveMappingC2SPacket.java | |||
| @@ -1,9 +1,9 @@ | |||
| 1 | package cuchaz.enigma.network.packet; | 1 | package cuchaz.enigma.network.packet; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.network.ServerPacketHandler; | 3 | import cuchaz.enigma.network.ServerPacketHandler; |
| 4 | import cuchaz.enigma.throwables.IllegalNameException; | 4 | import cuchaz.enigma.translation.mapping.IllegalNameException; |
| 5 | import cuchaz.enigma.translation.representation.entry.Entry; | 5 | import cuchaz.enigma.translation.representation.entry.Entry; |
| 6 | import cuchaz.enigma.utils.Message; | 6 | import cuchaz.enigma.network.Message; |
| 7 | 7 | ||
| 8 | import java.io.DataInput; | 8 | import java.io.DataInput; |
| 9 | import java.io.DataOutput; | 9 | import java.io.DataOutput; |
diff --git a/src/main/java/cuchaz/enigma/network/packet/RemoveMappingS2CPacket.java b/enigma-server/src/main/java/cuchaz/enigma/network/packet/RemoveMappingS2CPacket.java index 7bb1b00..70d803c 100644 --- a/src/main/java/cuchaz/enigma/network/packet/RemoveMappingS2CPacket.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/packet/RemoveMappingS2CPacket.java | |||
| @@ -1,14 +1,14 @@ | |||
| 1 | package cuchaz.enigma.network.packet; | 1 | package cuchaz.enigma.network.packet; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.analysis.EntryReference; | 3 | import cuchaz.enigma.analysis.EntryReference; |
| 4 | import cuchaz.enigma.gui.GuiController; | 4 | import cuchaz.enigma.network.ClientPacketHandler; |
| 5 | import cuchaz.enigma.translation.representation.entry.Entry; | 5 | import cuchaz.enigma.translation.representation.entry.Entry; |
| 6 | 6 | ||
| 7 | import java.io.DataInput; | 7 | import java.io.DataInput; |
| 8 | import java.io.DataOutput; | 8 | import java.io.DataOutput; |
| 9 | import java.io.IOException; | 9 | import java.io.IOException; |
| 10 | 10 | ||
| 11 | public class RemoveMappingS2CPacket implements Packet<GuiController> { | 11 | public class RemoveMappingS2CPacket implements Packet<ClientPacketHandler> { |
| 12 | private int syncId; | 12 | private int syncId; |
| 13 | private Entry<?> entry; | 13 | private Entry<?> entry; |
| 14 | 14 | ||
| @@ -33,7 +33,7 @@ public class RemoveMappingS2CPacket implements Packet<GuiController> { | |||
| 33 | } | 33 | } |
| 34 | 34 | ||
| 35 | @Override | 35 | @Override |
| 36 | public void handle(GuiController controller) { | 36 | public void handle(ClientPacketHandler controller) { |
| 37 | controller.removeMapping(new EntryReference<>(entry, entry.getName()), false); | 37 | controller.removeMapping(new EntryReference<>(entry, entry.getName()), false); |
| 38 | controller.sendPacket(new ConfirmChangeC2SPacket(syncId)); | 38 | controller.sendPacket(new ConfirmChangeC2SPacket(syncId)); |
| 39 | } | 39 | } |
diff --git a/src/main/java/cuchaz/enigma/network/packet/RenameC2SPacket.java b/enigma-server/src/main/java/cuchaz/enigma/network/packet/RenameC2SPacket.java index 03e95d6..e3e7e37 100644 --- a/src/main/java/cuchaz/enigma/network/packet/RenameC2SPacket.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/packet/RenameC2SPacket.java | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | package cuchaz.enigma.network.packet; | 1 | package cuchaz.enigma.network.packet; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.network.ServerPacketHandler; | 3 | import cuchaz.enigma.network.ServerPacketHandler; |
| 4 | import cuchaz.enigma.throwables.IllegalNameException; | 4 | import cuchaz.enigma.translation.mapping.IllegalNameException; |
| 5 | import cuchaz.enigma.translation.mapping.EntryMapping; | 5 | import cuchaz.enigma.translation.mapping.EntryMapping; |
| 6 | import cuchaz.enigma.translation.representation.entry.Entry; | 6 | import cuchaz.enigma.translation.representation.entry.Entry; |
| 7 | import cuchaz.enigma.utils.Message; | 7 | import cuchaz.enigma.network.Message; |
| 8 | 8 | ||
| 9 | import java.io.DataInput; | 9 | import java.io.DataInput; |
| 10 | import java.io.DataOutput; | 10 | import java.io.DataOutput; |
diff --git a/src/main/java/cuchaz/enigma/network/packet/RenameS2CPacket.java b/enigma-server/src/main/java/cuchaz/enigma/network/packet/RenameS2CPacket.java index 058f0e5..787e89e 100644 --- a/src/main/java/cuchaz/enigma/network/packet/RenameS2CPacket.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/packet/RenameS2CPacket.java | |||
| @@ -1,14 +1,14 @@ | |||
| 1 | package cuchaz.enigma.network.packet; | 1 | package cuchaz.enigma.network.packet; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.analysis.EntryReference; | 3 | import cuchaz.enigma.analysis.EntryReference; |
| 4 | import cuchaz.enigma.gui.GuiController; | 4 | import cuchaz.enigma.network.ClientPacketHandler; |
| 5 | import cuchaz.enigma.translation.representation.entry.Entry; | 5 | import cuchaz.enigma.translation.representation.entry.Entry; |
| 6 | 6 | ||
| 7 | import java.io.DataInput; | 7 | import java.io.DataInput; |
| 8 | import java.io.DataOutput; | 8 | import java.io.DataOutput; |
| 9 | import java.io.IOException; | 9 | import java.io.IOException; |
| 10 | 10 | ||
| 11 | public class RenameS2CPacket implements Packet<GuiController> { | 11 | public class RenameS2CPacket implements Packet<ClientPacketHandler> { |
| 12 | private int syncId; | 12 | private int syncId; |
| 13 | private Entry<?> entry; | 13 | private Entry<?> entry; |
| 14 | private String newName; | 14 | private String newName; |
| @@ -41,7 +41,7 @@ public class RenameS2CPacket implements Packet<GuiController> { | |||
| 41 | } | 41 | } |
| 42 | 42 | ||
| 43 | @Override | 43 | @Override |
| 44 | public void handle(GuiController controller) { | 44 | public void handle(ClientPacketHandler controller) { |
| 45 | controller.rename(new EntryReference<>(entry, entry.getName()), newName, refreshClassTree, false); | 45 | controller.rename(new EntryReference<>(entry, entry.getName()), newName, refreshClassTree, false); |
| 46 | controller.sendPacket(new ConfirmChangeC2SPacket(syncId)); | 46 | controller.sendPacket(new ConfirmChangeC2SPacket(syncId)); |
| 47 | } | 47 | } |
diff --git a/src/main/java/cuchaz/enigma/network/packet/SyncMappingsS2CPacket.java b/enigma-server/src/main/java/cuchaz/enigma/network/packet/SyncMappingsS2CPacket.java index e6378d1..76ecbc7 100644 --- a/src/main/java/cuchaz/enigma/network/packet/SyncMappingsS2CPacket.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/packet/SyncMappingsS2CPacket.java | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | package cuchaz.enigma.network.packet; | 1 | package cuchaz.enigma.network.packet; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.gui.GuiController; | ||
| 4 | import cuchaz.enigma.network.EnigmaServer; | ||
| 5 | import cuchaz.enigma.translation.mapping.EntryMapping; | 3 | import cuchaz.enigma.translation.mapping.EntryMapping; |
| 6 | import cuchaz.enigma.translation.mapping.tree.EntryTree; | 4 | import cuchaz.enigma.translation.mapping.tree.EntryTree; |
| 7 | import cuchaz.enigma.translation.mapping.tree.EntryTreeNode; | 5 | import cuchaz.enigma.translation.mapping.tree.EntryTreeNode; |
| 8 | import cuchaz.enigma.translation.mapping.tree.HashEntryTree; | 6 | import cuchaz.enigma.translation.mapping.tree.HashEntryTree; |
| 7 | import cuchaz.enigma.network.ClientPacketHandler; | ||
| 8 | import cuchaz.enigma.network.EnigmaServer; | ||
| 9 | import cuchaz.enigma.translation.representation.entry.Entry; | 9 | import cuchaz.enigma.translation.representation.entry.Entry; |
| 10 | 10 | ||
| 11 | import java.io.DataInput; | 11 | import java.io.DataInput; |
| @@ -15,7 +15,7 @@ import java.util.Collection; | |||
| 15 | import java.util.List; | 15 | import java.util.List; |
| 16 | import java.util.stream.Collectors; | 16 | import java.util.stream.Collectors; |
| 17 | 17 | ||
| 18 | public class SyncMappingsS2CPacket implements Packet<GuiController> { | 18 | public class SyncMappingsS2CPacket implements Packet<ClientPacketHandler> { |
| 19 | private EntryTree<EntryMapping> mappings; | 19 | private EntryTree<EntryMapping> mappings; |
| 20 | 20 | ||
| 21 | SyncMappingsS2CPacket() { | 21 | SyncMappingsS2CPacket() { |
| @@ -81,7 +81,7 @@ public class SyncMappingsS2CPacket implements Packet<GuiController> { | |||
| 81 | } | 81 | } |
| 82 | 82 | ||
| 83 | @Override | 83 | @Override |
| 84 | public void handle(GuiController controller) { | 84 | public void handle(ClientPacketHandler controller) { |
| 85 | controller.openMappings(mappings); | 85 | controller.openMappings(mappings); |
| 86 | controller.sendPacket(new ConfirmChangeC2SPacket(EnigmaServer.DUMMY_SYNC_ID)); | 86 | controller.sendPacket(new ConfirmChangeC2SPacket(EnigmaServer.DUMMY_SYNC_ID)); |
| 87 | } | 87 | } |
diff --git a/src/main/java/cuchaz/enigma/network/packet/UserListS2CPacket.java b/enigma-server/src/main/java/cuchaz/enigma/network/packet/UserListS2CPacket.java index 8904848..b4a277a 100644 --- a/src/main/java/cuchaz/enigma/network/packet/UserListS2CPacket.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/packet/UserListS2CPacket.java | |||
| @@ -1,14 +1,14 @@ | |||
| 1 | package cuchaz.enigma.network.packet; | 1 | package cuchaz.enigma.network.packet; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.network.ClientPacketHandler; | ||
| 4 | |||
| 3 | import java.io.DataInput; | 5 | import java.io.DataInput; |
| 4 | import java.io.DataOutput; | 6 | import java.io.DataOutput; |
| 5 | import java.io.IOException; | 7 | import java.io.IOException; |
| 6 | import java.util.ArrayList; | 8 | import java.util.ArrayList; |
| 7 | import java.util.List; | 9 | import java.util.List; |
| 8 | 10 | ||
| 9 | import cuchaz.enigma.gui.GuiController; | 11 | public class UserListS2CPacket implements Packet<ClientPacketHandler> { |
| 10 | |||
| 11 | public class UserListS2CPacket implements Packet<GuiController> { | ||
| 12 | 12 | ||
| 13 | private List<String> users; | 13 | private List<String> users; |
| 14 | 14 | ||
| @@ -37,7 +37,7 @@ public class UserListS2CPacket implements Packet<GuiController> { | |||
| 37 | } | 37 | } |
| 38 | 38 | ||
| 39 | @Override | 39 | @Override |
| 40 | public void handle(GuiController handler) { | 40 | public void handle(ClientPacketHandler handler) { |
| 41 | handler.updateUserList(users); | 41 | handler.updateUserList(users); |
| 42 | } | 42 | } |
| 43 | 43 | ||
diff --git a/enigma-swing/build.gradle b/enigma-swing/build.gradle new file mode 100644 index 0000000..a1bcafc --- /dev/null +++ b/enigma-swing/build.gradle | |||
| @@ -0,0 +1,23 @@ | |||
| 1 | plugins { | ||
| 2 | id 'com.github.johnrengelman.shadow' version '5.2.0' | ||
| 3 | } | ||
| 4 | |||
| 5 | dependencies { | ||
| 6 | implementation project(':enigma') | ||
| 7 | implementation project(':enigma-server') | ||
| 8 | |||
| 9 | implementation 'net.sf.jopt-simple:jopt-simple:6.0-alpha-3' | ||
| 10 | implementation 'com.bulenkov:darcula:1.0.0-bobbylight' | ||
| 11 | implementation 'de.sciss:syntaxpane:1.2.0' | ||
| 12 | implementation 'com.github.lukeu:swing-dpi:0.6' | ||
| 13 | } | ||
| 14 | |||
| 15 | jar.manifest.attributes 'Main-Class': 'cuchaz.enigma.gui.Main' | ||
| 16 | |||
| 17 | publishing { | ||
| 18 | publications { | ||
| 19 | shadow(MavenPublication) { publication -> | ||
| 20 | project.shadow.component(publication) | ||
| 21 | } | ||
| 22 | } | ||
| 23 | } \ No newline at end of file | ||
diff --git a/src/main/java/cuchaz/enigma/gui/BrowserCaret.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/BrowserCaret.java index af105db..af105db 100644 --- a/src/main/java/cuchaz/enigma/gui/BrowserCaret.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/BrowserCaret.java | |||
diff --git a/src/main/java/cuchaz/enigma/gui/ClassSelector.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/ClassSelector.java index a23e24c..3d0e04c 100644 --- a/src/main/java/cuchaz/enigma/gui/ClassSelector.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/ClassSelector.java | |||
| @@ -28,7 +28,7 @@ import com.google.common.collect.Maps; | |||
| 28 | import com.google.common.collect.Multimap; | 28 | import com.google.common.collect.Multimap; |
| 29 | import cuchaz.enigma.gui.node.ClassSelectorClassNode; | 29 | import cuchaz.enigma.gui.node.ClassSelectorClassNode; |
| 30 | import cuchaz.enigma.gui.node.ClassSelectorPackageNode; | 30 | import cuchaz.enigma.gui.node.ClassSelectorPackageNode; |
| 31 | import cuchaz.enigma.throwables.IllegalNameException; | 31 | import cuchaz.enigma.translation.mapping.IllegalNameException; |
| 32 | import cuchaz.enigma.translation.Translator; | 32 | import cuchaz.enigma.translation.Translator; |
| 33 | import cuchaz.enigma.translation.representation.entry.ClassEntry; | 33 | import cuchaz.enigma.translation.representation.entry.ClassEntry; |
| 34 | 34 | ||
diff --git a/src/main/java/cuchaz/enigma/gui/CodeReader.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/CodeReader.java index e119640..356656b 100644 --- a/src/main/java/cuchaz/enigma/gui/CodeReader.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/CodeReader.java | |||
| @@ -11,7 +11,7 @@ | |||
| 11 | 11 | ||
| 12 | package cuchaz.enigma.gui; | 12 | package cuchaz.enigma.gui; |
| 13 | 13 | ||
| 14 | import cuchaz.enigma.analysis.Token; | 14 | import cuchaz.enigma.source.Token; |
| 15 | 15 | ||
| 16 | import javax.swing.*; | 16 | import javax.swing.*; |
| 17 | import javax.swing.text.BadLocationException; | 17 | import javax.swing.text.BadLocationException; |
diff --git a/src/main/java/cuchaz/enigma/gui/ConnectionState.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/ConnectionState.java index db6590d..db6590d 100644 --- a/src/main/java/cuchaz/enigma/gui/ConnectionState.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/ConnectionState.java | |||
diff --git a/src/main/java/cuchaz/enigma/gui/DecompiledClassSource.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/DecompiledClassSource.java index 08df3e7..aca5d72 100644 --- a/src/main/java/cuchaz/enigma/gui/DecompiledClassSource.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/DecompiledClassSource.java | |||
| @@ -3,10 +3,11 @@ package cuchaz.enigma.gui; | |||
| 3 | import cuchaz.enigma.EnigmaProject; | 3 | import cuchaz.enigma.EnigmaProject; |
| 4 | import cuchaz.enigma.EnigmaServices; | 4 | import cuchaz.enigma.EnigmaServices; |
| 5 | import cuchaz.enigma.analysis.EntryReference; | 5 | import cuchaz.enigma.analysis.EntryReference; |
| 6 | import cuchaz.enigma.analysis.Token; | 6 | import cuchaz.enigma.source.Token; |
| 7 | import cuchaz.enigma.api.service.NameProposalService; | 7 | import cuchaz.enigma.api.service.NameProposalService; |
| 8 | import cuchaz.enigma.gui.highlight.TokenHighlightType; | 8 | import cuchaz.enigma.gui.highlight.TokenHighlightType; |
| 9 | import cuchaz.enigma.source.SourceIndex; | 9 | import cuchaz.enigma.source.SourceIndex; |
| 10 | import cuchaz.enigma.source.SourceRemapper; | ||
| 10 | import cuchaz.enigma.translation.LocalNameGenerator; | 11 | import cuchaz.enigma.translation.LocalNameGenerator; |
| 11 | import cuchaz.enigma.translation.Translator; | 12 | import cuchaz.enigma.translation.Translator; |
| 12 | import cuchaz.enigma.translation.mapping.EntryRemapper; | 13 | import cuchaz.enigma.translation.mapping.EntryRemapper; |
diff --git a/src/main/java/cuchaz/enigma/gui/EnigmaQuickFindDialog.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/EnigmaQuickFindDialog.java index c912be3..c912be3 100644 --- a/src/main/java/cuchaz/enigma/gui/EnigmaQuickFindDialog.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/EnigmaQuickFindDialog.java | |||
diff --git a/src/main/java/cuchaz/enigma/gui/EnigmaSyntaxKit.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/EnigmaSyntaxKit.java index 42eaa60..2f08a26 100644 --- a/src/main/java/cuchaz/enigma/gui/EnigmaSyntaxKit.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/EnigmaSyntaxKit.java | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | package cuchaz.enigma.gui; | 1 | package cuchaz.enigma.gui; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.config.Config; | 3 | import cuchaz.enigma.gui.config.Config; |
| 4 | import de.sciss.syntaxpane.components.LineNumbersRuler; | 4 | import de.sciss.syntaxpane.components.LineNumbersRuler; |
| 5 | import de.sciss.syntaxpane.syntaxkits.JavaSyntaxKit; | 5 | import de.sciss.syntaxpane.syntaxkits.JavaSyntaxKit; |
| 6 | import de.sciss.syntaxpane.util.Configuration; | 6 | import de.sciss.syntaxpane.util.Configuration; |
diff --git a/src/main/java/cuchaz/enigma/ExceptionIgnorer.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/ExceptionIgnorer.java index 84331cc..6246192 100644 --- a/src/main/java/cuchaz/enigma/ExceptionIgnorer.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/ExceptionIgnorer.java | |||
| @@ -9,7 +9,7 @@ | |||
| 9 | * Jeff Martin - initial API and implementation | 9 | * Jeff Martin - initial API and implementation |
| 10 | ******************************************************************************/ | 10 | ******************************************************************************/ |
| 11 | 11 | ||
| 12 | package cuchaz.enigma; | 12 | package cuchaz.enigma.gui; |
| 13 | 13 | ||
| 14 | public class ExceptionIgnorer { | 14 | public class ExceptionIgnorer { |
| 15 | 15 | ||
diff --git a/src/main/java/cuchaz/enigma/gui/Gui.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/Gui.java index ed32469..2ed1010 100644 --- a/src/main/java/cuchaz/enigma/gui/Gui.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/Gui.java | |||
| @@ -25,12 +25,11 @@ import javax.swing.tree.*; | |||
| 25 | 25 | ||
| 26 | import com.google.common.base.Strings; | 26 | import com.google.common.base.Strings; |
| 27 | import com.google.common.collect.Lists; | 27 | import com.google.common.collect.Lists; |
| 28 | import cuchaz.enigma.Constants; | 28 | import cuchaz.enigma.Enigma; |
| 29 | import cuchaz.enigma.EnigmaProfile; | 29 | import cuchaz.enigma.EnigmaProfile; |
| 30 | import cuchaz.enigma.ExceptionIgnorer; | ||
| 31 | import cuchaz.enigma.analysis.*; | 30 | import cuchaz.enigma.analysis.*; |
| 32 | import cuchaz.enigma.config.Config; | 31 | import cuchaz.enigma.gui.config.Config; |
| 33 | import cuchaz.enigma.config.Themes; | 32 | import cuchaz.enigma.gui.config.Themes; |
| 34 | import cuchaz.enigma.gui.dialog.CrashDialog; | 33 | import cuchaz.enigma.gui.dialog.CrashDialog; |
| 35 | import cuchaz.enigma.gui.dialog.JavadocDialog; | 34 | import cuchaz.enigma.gui.dialog.JavadocDialog; |
| 36 | import cuchaz.enigma.gui.dialog.SearchDialog; | 35 | import cuchaz.enigma.gui.dialog.SearchDialog; |
| @@ -46,15 +45,16 @@ import cuchaz.enigma.gui.panels.PanelDeobf; | |||
| 46 | import cuchaz.enigma.gui.panels.PanelEditor; | 45 | import cuchaz.enigma.gui.panels.PanelEditor; |
| 47 | import cuchaz.enigma.gui.panels.PanelIdentifier; | 46 | import cuchaz.enigma.gui.panels.PanelIdentifier; |
| 48 | import cuchaz.enigma.gui.panels.PanelObf; | 47 | import cuchaz.enigma.gui.panels.PanelObf; |
| 48 | import cuchaz.enigma.gui.util.GuiUtil; | ||
| 49 | import cuchaz.enigma.gui.util.History; | 49 | import cuchaz.enigma.gui.util.History; |
| 50 | import cuchaz.enigma.network.packet.*; | 50 | import cuchaz.enigma.network.packet.*; |
| 51 | import cuchaz.enigma.throwables.IllegalNameException; | 51 | import cuchaz.enigma.source.Token; |
| 52 | import cuchaz.enigma.translation.mapping.IllegalNameException; | ||
| 52 | import cuchaz.enigma.translation.mapping.*; | 53 | import cuchaz.enigma.translation.mapping.*; |
| 53 | import cuchaz.enigma.translation.representation.entry.*; | 54 | import cuchaz.enigma.translation.representation.entry.*; |
| 54 | import cuchaz.enigma.utils.I18n; | 55 | import cuchaz.enigma.network.Message; |
| 55 | import cuchaz.enigma.utils.Message; | ||
| 56 | import cuchaz.enigma.gui.util.ScaleUtil; | 56 | import cuchaz.enigma.gui.util.ScaleUtil; |
| 57 | import cuchaz.enigma.utils.Utils; | 57 | import cuchaz.enigma.utils.I18n; |
| 58 | import de.sciss.syntaxpane.DefaultSyntaxKit; | 58 | import de.sciss.syntaxpane.DefaultSyntaxKit; |
| 59 | 59 | ||
| 60 | public class Gui { | 60 | public class Gui { |
| @@ -127,7 +127,7 @@ public class Gui { | |||
| 127 | Config.getInstance().lookAndFeel.setGlobalLAF(); | 127 | Config.getInstance().lookAndFeel.setGlobalLAF(); |
| 128 | 128 | ||
| 129 | // init frame | 129 | // init frame |
| 130 | this.frame = new JFrame(Constants.NAME); | 130 | this.frame = new JFrame(Enigma.NAME); |
| 131 | final Container pane = this.frame.getContentPane(); | 131 | final Container pane = this.frame.getContentPane(); |
| 132 | pane.setLayout(new BorderLayout()); | 132 | pane.setLayout(new BorderLayout()); |
| 133 | 133 | ||
| @@ -386,7 +386,7 @@ public class Gui { | |||
| 386 | 386 | ||
| 387 | public void onFinishOpenJar(String jarName) { | 387 | public void onFinishOpenJar(String jarName) { |
| 388 | // update gui | 388 | // update gui |
| 389 | this.frame.setTitle(Constants.NAME + " - " + jarName); | 389 | this.frame.setTitle(Enigma.NAME + " - " + jarName); |
| 390 | this.classesPanel.removeAll(); | 390 | this.classesPanel.removeAll(); |
| 391 | this.classesPanel.add(splitClasses); | 391 | this.classesPanel.add(splitClasses); |
| 392 | setEditorText(null); | 392 | setEditorText(null); |
| @@ -401,7 +401,7 @@ public class Gui { | |||
| 401 | public void onCloseJar() { | 401 | public void onCloseJar() { |
| 402 | 402 | ||
| 403 | // update gui | 403 | // update gui |
| 404 | this.frame.setTitle(Constants.NAME); | 404 | this.frame.setTitle(Enigma.NAME); |
| 405 | setObfClasses(null); | 405 | setObfClasses(null); |
| 406 | setDeobfClasses(null); | 406 | setDeobfClasses(null); |
| 407 | setEditorText(null); | 407 | setEditorText(null); |
| @@ -551,7 +551,7 @@ public class Gui { | |||
| 551 | label.setPreferredSize(ScaleUtil.getDimension(100, ScaleUtil.invert(label.getPreferredSize().height))); | 551 | label.setPreferredSize(ScaleUtil.getDimension(100, ScaleUtil.invert(label.getPreferredSize().height))); |
| 552 | panel.add(label); | 552 | panel.add(label); |
| 553 | 553 | ||
| 554 | panel.add(Utils.unboldLabel(new JLabel(value, JLabel.LEFT))); | 554 | panel.add(GuiUtil.unboldLabel(new JLabel(value, JLabel.LEFT))); |
| 555 | 555 | ||
| 556 | container.add(panel); | 556 | container.add(panel); |
| 557 | } | 557 | } |
| @@ -665,7 +665,7 @@ public class Gui { | |||
| 665 | } catch (IllegalNameException ex) { | 665 | } catch (IllegalNameException ex) { |
| 666 | javadocTextArea.setBorder(BorderFactory.createLineBorder(Color.red, 1)); | 666 | javadocTextArea.setBorder(BorderFactory.createLineBorder(Color.red, 1)); |
| 667 | javadocTextArea.setToolTipText(ex.getReason()); | 667 | javadocTextArea.setToolTipText(ex.getReason()); |
| 668 | Utils.showToolTipNow(javadocTextArea); | 668 | GuiUtil.showToolTipNow(javadocTextArea); |
| 669 | return; | 669 | return; |
| 670 | } | 670 | } |
| 671 | 671 | ||
| @@ -739,7 +739,7 @@ public class Gui { | |||
| 739 | } catch (IllegalNameException ex) { | 739 | } catch (IllegalNameException ex) { |
| 740 | renameTextField.setBorder(BorderFactory.createLineBorder(Color.red, 1)); | 740 | renameTextField.setBorder(BorderFactory.createLineBorder(Color.red, 1)); |
| 741 | renameTextField.setToolTipText(ex.getReason()); | 741 | renameTextField.setToolTipText(ex.getReason()); |
| 742 | Utils.showToolTipNow(renameTextField); | 742 | GuiUtil.showToolTipNow(renameTextField); |
| 743 | } | 743 | } |
| 744 | return; | 744 | return; |
| 745 | } | 745 | } |
diff --git a/src/main/java/cuchaz/enigma/gui/GuiController.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java index cccc9e8..94979e7 100644 --- a/src/main/java/cuchaz/enigma/gui/GuiController.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java | |||
| @@ -18,23 +18,21 @@ import cuchaz.enigma.EnigmaProfile; | |||
| 18 | import cuchaz.enigma.EnigmaProject; | 18 | import cuchaz.enigma.EnigmaProject; |
| 19 | import cuchaz.enigma.analysis.*; | 19 | import cuchaz.enigma.analysis.*; |
| 20 | import cuchaz.enigma.api.service.ObfuscationTestService; | 20 | import cuchaz.enigma.api.service.ObfuscationTestService; |
| 21 | import cuchaz.enigma.bytecode.translators.SourceFixVisitor; | 21 | import cuchaz.enigma.gui.config.Config; |
| 22 | import cuchaz.enigma.config.Config; | ||
| 23 | import cuchaz.enigma.gui.dialog.ProgressDialog; | 22 | import cuchaz.enigma.gui.dialog.ProgressDialog; |
| 24 | import cuchaz.enigma.gui.stats.StatsGenerator; | 23 | import cuchaz.enigma.gui.stats.StatsGenerator; |
| 25 | import cuchaz.enigma.gui.stats.StatsMember; | 24 | import cuchaz.enigma.gui.stats.StatsMember; |
| 25 | import cuchaz.enigma.gui.util.GuiUtil; | ||
| 26 | import cuchaz.enigma.gui.util.History; | 26 | import cuchaz.enigma.gui.util.History; |
| 27 | import cuchaz.enigma.network.EnigmaClient; | 27 | import cuchaz.enigma.network.*; |
| 28 | import cuchaz.enigma.network.EnigmaServer; | ||
| 29 | import cuchaz.enigma.network.IntegratedEnigmaServer; | ||
| 30 | import cuchaz.enigma.network.ServerPacketHandler; | ||
| 31 | import cuchaz.enigma.network.packet.LoginC2SPacket; | 28 | import cuchaz.enigma.network.packet.LoginC2SPacket; |
| 32 | import cuchaz.enigma.network.packet.Packet; | 29 | import cuchaz.enigma.network.packet.Packet; |
| 33 | import cuchaz.enigma.source.*; | 30 | import cuchaz.enigma.source.*; |
| 34 | import cuchaz.enigma.throwables.MappingParseException; | 31 | import cuchaz.enigma.translation.mapping.serde.MappingParseException; |
| 35 | import cuchaz.enigma.translation.Translator; | 32 | import cuchaz.enigma.translation.Translator; |
| 36 | import cuchaz.enigma.translation.mapping.*; | 33 | import cuchaz.enigma.translation.mapping.*; |
| 37 | import cuchaz.enigma.translation.mapping.serde.MappingFormat; | 34 | import cuchaz.enigma.translation.mapping.serde.MappingFormat; |
| 35 | import cuchaz.enigma.translation.mapping.serde.MappingSaveParameters; | ||
| 38 | import cuchaz.enigma.translation.mapping.tree.EntryTree; | 36 | import cuchaz.enigma.translation.mapping.tree.EntryTree; |
| 39 | import cuchaz.enigma.translation.mapping.tree.HashEntryTree; | 37 | import cuchaz.enigma.translation.mapping.tree.HashEntryTree; |
| 40 | import cuchaz.enigma.translation.representation.entry.ClassEntry; | 38 | import cuchaz.enigma.translation.representation.entry.ClassEntry; |
| @@ -42,10 +40,7 @@ import cuchaz.enigma.translation.representation.entry.Entry; | |||
| 42 | import cuchaz.enigma.translation.representation.entry.FieldEntry; | 40 | import cuchaz.enigma.translation.representation.entry.FieldEntry; |
| 43 | import cuchaz.enigma.translation.representation.entry.MethodEntry; | 41 | import cuchaz.enigma.translation.representation.entry.MethodEntry; |
| 44 | import cuchaz.enigma.utils.I18n; | 42 | import cuchaz.enigma.utils.I18n; |
| 45 | import cuchaz.enigma.utils.Message; | ||
| 46 | import cuchaz.enigma.utils.ReadableToken; | ||
| 47 | import cuchaz.enigma.utils.Utils; | 43 | import cuchaz.enigma.utils.Utils; |
| 48 | import org.objectweb.asm.tree.ClassNode; | ||
| 49 | 44 | ||
| 50 | import javax.annotation.Nullable; | 45 | import javax.annotation.Nullable; |
| 51 | import javax.swing.JOptionPane; | 46 | import javax.swing.JOptionPane; |
| @@ -63,7 +58,7 @@ import java.util.concurrent.Executors; | |||
| 63 | import java.util.stream.Collectors; | 58 | import java.util.stream.Collectors; |
| 64 | import java.util.stream.Stream; | 59 | import java.util.stream.Stream; |
| 65 | 60 | ||
| 66 | public class GuiController { | 61 | public class GuiController implements ClientPacketHandler { |
| 67 | private static final ExecutorService DECOMPILER_SERVICE = Executors.newSingleThreadExecutor( | 62 | private static final ExecutorService DECOMPILER_SERVICE = Executors.newSingleThreadExecutor( |
| 68 | new ThreadFactoryBuilder() | 63 | new ThreadFactoryBuilder() |
| 69 | .setDaemon(true) | 64 | .setDaemon(true) |
| @@ -107,26 +102,12 @@ public class GuiController { | |||
| 107 | return ProgressDialog.runOffThread(gui.getFrame(), progress -> { | 102 | return ProgressDialog.runOffThread(gui.getFrame(), progress -> { |
| 108 | project = enigma.openJar(jarPath, progress); | 103 | project = enigma.openJar(jarPath, progress); |
| 109 | indexTreeBuilder = new IndexTreeBuilder(project.getJarIndex()); | 104 | indexTreeBuilder = new IndexTreeBuilder(project.getJarIndex()); |
| 110 | decompiler = createDecompiler(); | 105 | decompiler = project.createDecompiler(decompilerService); |
| 111 | gui.onFinishOpenJar(jarPath.getFileName().toString()); | 106 | gui.onFinishOpenJar(jarPath.getFileName().toString()); |
| 112 | refreshClasses(); | 107 | refreshClasses(); |
| 113 | }); | 108 | }); |
| 114 | } | 109 | } |
| 115 | 110 | ||
| 116 | private Decompiler createDecompiler() { | ||
| 117 | return decompilerService.create(name -> { | ||
| 118 | ClassNode node = project.getClassCache().getClassNode(name); | ||
| 119 | |||
| 120 | if (node == null) { | ||
| 121 | return null; | ||
| 122 | } | ||
| 123 | |||
| 124 | ClassNode fixedNode = new ClassNode(); | ||
| 125 | node.accept(new SourceFixVisitor(Utils.ASM_VERSION, fixedNode, project.getJarIndex())); | ||
| 126 | return fixedNode; | ||
| 127 | }, new SourceSettings(true, true)); | ||
| 128 | } | ||
| 129 | |||
| 130 | public void closeJar() { | 111 | public void closeJar() { |
| 131 | this.project = null; | 112 | this.project = null; |
| 132 | this.gui.onCloseJar(); | 113 | this.gui.onCloseJar(); |
| @@ -155,6 +136,7 @@ public class GuiController { | |||
| 155 | }); | 136 | }); |
| 156 | } | 137 | } |
| 157 | 138 | ||
| 139 | @Override | ||
| 158 | public void openMappings(EntryTree<EntryMapping> mappings) { | 140 | public void openMappings(EntryTree<EntryMapping> mappings) { |
| 159 | if (project == null) return; | 141 | if (project == null) return; |
| 160 | 142 | ||
| @@ -415,10 +397,10 @@ public class GuiController { | |||
| 415 | Rectangle viewportBounds = gui.sourceScroller.getViewport().getViewRect(); | 397 | Rectangle viewportBounds = gui.sourceScroller.getViewport().getViewRect(); |
| 416 | // Here we pick an "anchor position", which we want to stay in the same vertical location on the screen after the new text has been set | 398 | // Here we pick an "anchor position", which we want to stay in the same vertical location on the screen after the new text has been set |
| 417 | int anchorModelPos = gui.editor.getSelectionStart(); | 399 | int anchorModelPos = gui.editor.getSelectionStart(); |
| 418 | Rectangle anchorViewPos = Utils.safeModelToView(gui.editor, anchorModelPos); | 400 | Rectangle anchorViewPos = GuiUtil.safeModelToView(gui.editor, anchorModelPos); |
| 419 | if (anchorViewPos.y < viewportBounds.y || anchorViewPos.y >= viewportBounds.y + viewportBounds.height) { | 401 | if (anchorViewPos.y < viewportBounds.y || anchorViewPos.y >= viewportBounds.y + viewportBounds.height) { |
| 420 | anchorModelPos = gui.editor.viewToModel(new Point(0, viewportBounds.y)); | 402 | anchorModelPos = gui.editor.viewToModel(new Point(0, viewportBounds.y)); |
| 421 | anchorViewPos = Utils.safeModelToView(gui.editor, anchorModelPos); | 403 | anchorViewPos = GuiUtil.safeModelToView(gui.editor, anchorModelPos); |
| 422 | } | 404 | } |
| 423 | int obfAnchorPos = currentSource.getObfuscatedOffset(anchorModelPos); | 405 | int obfAnchorPos = currentSource.getObfuscatedOffset(anchorModelPos); |
| 424 | Rectangle anchorViewPos_f = anchorViewPos; | 406 | Rectangle anchorViewPos_f = anchorViewPos; |
| @@ -426,7 +408,7 @@ public class GuiController { | |||
| 426 | 408 | ||
| 427 | loadClass(currentSource.getEntry(), () -> SwingUtilities.invokeLater(() -> { | 409 | loadClass(currentSource.getEntry(), () -> SwingUtilities.invokeLater(() -> { |
| 428 | int newAnchorModelPos = currentSource.getDeobfuscatedOffset(obfAnchorPos); | 410 | int newAnchorModelPos = currentSource.getDeobfuscatedOffset(obfAnchorPos); |
| 429 | Rectangle newAnchorViewPos = Utils.safeModelToView(gui.editor, newAnchorModelPos); | 411 | Rectangle newAnchorViewPos = GuiUtil.safeModelToView(gui.editor, newAnchorModelPos); |
| 430 | int newScrollY = newAnchorViewPos.y - (anchorViewPos_f.y - viewportBounds.y); | 412 | int newScrollY = newAnchorViewPos.y - (anchorViewPos_f.y - viewportBounds.y); |
| 431 | 413 | ||
| 432 | gui.editor.select(currentSource.getDeobfuscatedOffset(obfSelectionStart), currentSource.getDeobfuscatedOffset(obfSelectionEnd)); | 414 | gui.editor.select(currentSource.getDeobfuscatedOffset(obfSelectionStart), currentSource.getDeobfuscatedOffset(obfSelectionEnd)); |
| @@ -579,6 +561,7 @@ public class GuiController { | |||
| 579 | rename(reference, newName, refreshClassTree, true); | 561 | rename(reference, newName, refreshClassTree, true); |
| 580 | } | 562 | } |
| 581 | 563 | ||
| 564 | @Override | ||
| 582 | public void rename(EntryReference<Entry<?>, Entry<?>> reference, String newName, boolean refreshClassTree, boolean jumpToReference) { | 565 | public void rename(EntryReference<Entry<?>, Entry<?>> reference, String newName, boolean refreshClassTree, boolean jumpToReference) { |
| 583 | Entry<?> entry = reference.getNameableEntry(); | 566 | Entry<?> entry = reference.getNameableEntry(); |
| 584 | project.getMapper().mapFromObf(entry, new EntryMapping(newName)); | 567 | project.getMapper().mapFromObf(entry, new EntryMapping(newName)); |
| @@ -593,6 +576,7 @@ public class GuiController { | |||
| 593 | removeMapping(reference, true); | 576 | removeMapping(reference, true); |
| 594 | } | 577 | } |
| 595 | 578 | ||
| 579 | @Override | ||
| 596 | public void removeMapping(EntryReference<Entry<?>, Entry<?>> reference, boolean jumpToReference) { | 580 | public void removeMapping(EntryReference<Entry<?>, Entry<?>> reference, boolean jumpToReference) { |
| 597 | project.getMapper().removeByObf(reference.getNameableEntry()); | 581 | project.getMapper().removeByObf(reference.getNameableEntry()); |
| 598 | 582 | ||
| @@ -605,6 +589,7 @@ public class GuiController { | |||
| 605 | changeDocs(reference, updatedDocs, true); | 589 | changeDocs(reference, updatedDocs, true); |
| 606 | } | 590 | } |
| 607 | 591 | ||
| 592 | @Override | ||
| 608 | public void changeDocs(EntryReference<Entry<?>, Entry<?>> reference, String updatedDocs, boolean jumpToReference) { | 593 | public void changeDocs(EntryReference<Entry<?>, Entry<?>> reference, String updatedDocs, boolean jumpToReference) { |
| 609 | changeDoc(reference.entry, Utils.isBlank(updatedDocs) ? null : updatedDocs); | 594 | changeDoc(reference.entry, Utils.isBlank(updatedDocs) ? null : updatedDocs); |
| 610 | 595 | ||
| @@ -628,6 +613,7 @@ public class GuiController { | |||
| 628 | markAsDeobfuscated(reference, true); | 613 | markAsDeobfuscated(reference, true); |
| 629 | } | 614 | } |
| 630 | 615 | ||
| 616 | @Override | ||
| 631 | public void markAsDeobfuscated(EntryReference<Entry<?>, Entry<?>> reference, boolean jumpToReference) { | 617 | public void markAsDeobfuscated(EntryReference<Entry<?>, Entry<?>> reference, boolean jumpToReference) { |
| 632 | EntryRemapper mapper = project.getMapper(); | 618 | EntryRemapper mapper = project.getMapper(); |
| 633 | Entry<?> entry = reference.getNameableEntry(); | 619 | Entry<?> entry = reference.getNameableEntry(); |
| @@ -663,7 +649,7 @@ public class GuiController { | |||
| 663 | public void setDecompiler(DecompilerService service) { | 649 | public void setDecompiler(DecompilerService service) { |
| 664 | uncommentedSource = null; | 650 | uncommentedSource = null; |
| 665 | decompilerService = service; | 651 | decompilerService = service; |
| 666 | decompiler = createDecompiler(); | 652 | decompiler = project.createDecompiler(decompilerService); |
| 667 | refreshCurrentClass(null, RefreshMode.FULL); | 653 | refreshCurrentClass(null, RefreshMode.FULL); |
| 668 | } | 654 | } |
| 669 | 655 | ||
| @@ -691,6 +677,7 @@ public class GuiController { | |||
| 691 | gui.setConnectionState(ConnectionState.HOSTING); | 677 | gui.setConnectionState(ConnectionState.HOSTING); |
| 692 | } | 678 | } |
| 693 | 679 | ||
| 680 | @Override | ||
| 694 | public synchronized void disconnectIfConnected(String reason) { | 681 | public synchronized void disconnectIfConnected(String reason) { |
| 695 | if (client == null && server == null) { | 682 | if (client == null && server == null) { |
| 696 | return; | 683 | return; |
| @@ -712,16 +699,19 @@ public class GuiController { | |||
| 712 | }); | 699 | }); |
| 713 | } | 700 | } |
| 714 | 701 | ||
| 702 | @Override | ||
| 715 | public void sendPacket(Packet<ServerPacketHandler> packet) { | 703 | public void sendPacket(Packet<ServerPacketHandler> packet) { |
| 716 | if (client != null) { | 704 | if (client != null) { |
| 717 | client.sendPacket(packet); | 705 | client.sendPacket(packet); |
| 718 | } | 706 | } |
| 719 | } | 707 | } |
| 720 | 708 | ||
| 709 | @Override | ||
| 721 | public void addMessage(Message message) { | 710 | public void addMessage(Message message) { |
| 722 | gui.addMessage(message); | 711 | gui.addMessage(message); |
| 723 | } | 712 | } |
| 724 | 713 | ||
| 714 | @Override | ||
| 725 | public void updateUserList(List<String> users) { | 715 | public void updateUserList(List<String> users) { |
| 726 | gui.setUserList(users); | 716 | gui.setUserList(users); |
| 727 | } | 717 | } |
diff --git a/src/main/java/cuchaz/enigma/Main.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/Main.java index 7c87669..1f3aa2c 100644 --- a/src/main/java/cuchaz/enigma/Main.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/Main.java | |||
| @@ -9,12 +9,13 @@ | |||
| 9 | * Jeff Martin - initial API and implementation | 9 | * Jeff Martin - initial API and implementation |
| 10 | ******************************************************************************/ | 10 | ******************************************************************************/ |
| 11 | 11 | ||
| 12 | package cuchaz.enigma; | 12 | package cuchaz.enigma.gui; |
| 13 | 13 | ||
| 14 | import cuchaz.enigma.gui.Gui; | 14 | import cuchaz.enigma.EnigmaProfile; |
| 15 | import cuchaz.enigma.gui.GuiController; | 15 | import cuchaz.enigma.gui.config.Config; |
| 16 | import cuchaz.enigma.translation.mapping.serde.MappingFormat; | 16 | import cuchaz.enigma.translation.mapping.serde.MappingFormat; |
| 17 | 17 | ||
| 18 | import cuchaz.enigma.utils.I18n; | ||
| 18 | import joptsimple.*; | 19 | import joptsimple.*; |
| 19 | 20 | ||
| 20 | import java.io.IOException; | 21 | import java.io.IOException; |
| @@ -53,6 +54,7 @@ public class Main { | |||
| 53 | 54 | ||
| 54 | EnigmaProfile parsedProfile = EnigmaProfile.read(options.valueOf(profile)); | 55 | EnigmaProfile parsedProfile = EnigmaProfile.read(options.valueOf(profile)); |
| 55 | 56 | ||
| 57 | I18n.setLanguage(Config.getInstance().language); | ||
| 56 | Gui gui = new Gui(parsedProfile); | 58 | Gui gui = new Gui(parsedProfile); |
| 57 | GuiController controller = gui.getController(); | 59 | GuiController controller = gui.getController(); |
| 58 | 60 | ||
diff --git a/src/main/java/cuchaz/enigma/gui/MessageListCellRenderer.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/MessageListCellRenderer.java index c9e38cb..1d60340 100644 --- a/src/main/java/cuchaz/enigma/gui/MessageListCellRenderer.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/MessageListCellRenderer.java | |||
| @@ -5,7 +5,7 @@ import java.awt.Component; | |||
| 5 | import javax.swing.DefaultListCellRenderer; | 5 | import javax.swing.DefaultListCellRenderer; |
| 6 | import javax.swing.JList; | 6 | import javax.swing.JList; |
| 7 | 7 | ||
| 8 | import cuchaz.enigma.utils.Message; | 8 | import cuchaz.enigma.network.Message; |
| 9 | 9 | ||
| 10 | // For now, just render the translated text. | 10 | // For now, just render the translated text. |
| 11 | // TODO: Icons or something later? | 11 | // TODO: Icons or something later? |
diff --git a/src/main/java/cuchaz/enigma/gui/MethodTreeCellRenderer.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/MethodTreeCellRenderer.java index 05d90a9..1eead6e 100644 --- a/src/main/java/cuchaz/enigma/gui/MethodTreeCellRenderer.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/MethodTreeCellRenderer.java | |||
| @@ -12,7 +12,7 @@ | |||
| 12 | package cuchaz.enigma.gui; | 12 | package cuchaz.enigma.gui; |
| 13 | 13 | ||
| 14 | import cuchaz.enigma.analysis.MethodInheritanceTreeNode; | 14 | import cuchaz.enigma.analysis.MethodInheritanceTreeNode; |
| 15 | import cuchaz.enigma.config.Config; | 15 | import cuchaz.enigma.gui.config.Config; |
| 16 | 16 | ||
| 17 | import javax.swing.*; | 17 | import javax.swing.*; |
| 18 | import javax.swing.tree.TreeCellRenderer; | 18 | import javax.swing.tree.TreeCellRenderer; |
diff --git a/src/main/java/cuchaz/enigma/gui/QuickFindAction.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/QuickFindAction.java index b7fa2eb..b7fa2eb 100644 --- a/src/main/java/cuchaz/enigma/gui/QuickFindAction.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/QuickFindAction.java | |||
diff --git a/src/main/java/cuchaz/enigma/utils/ReadableToken.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/ReadableToken.java index de152fe..3e4b30c 100644 --- a/src/main/java/cuchaz/enigma/utils/ReadableToken.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/ReadableToken.java | |||
| @@ -9,7 +9,7 @@ | |||
| 9 | * Jeff Martin - initial API and implementation | 9 | * Jeff Martin - initial API and implementation |
| 10 | ******************************************************************************/ | 10 | ******************************************************************************/ |
| 11 | 11 | ||
| 12 | package cuchaz.enigma.utils; | 12 | package cuchaz.enigma.gui; |
| 13 | 13 | ||
| 14 | public class ReadableToken { | 14 | public class ReadableToken { |
| 15 | 15 | ||
diff --git a/src/main/java/cuchaz/enigma/gui/RefreshMode.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/RefreshMode.java index 87cb83b..87cb83b 100644 --- a/src/main/java/cuchaz/enigma/gui/RefreshMode.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/RefreshMode.java | |||
diff --git a/src/main/java/cuchaz/enigma/gui/TokenListCellRenderer.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/TokenListCellRenderer.java index 7375111..10c418c 100644 --- a/src/main/java/cuchaz/enigma/gui/TokenListCellRenderer.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/TokenListCellRenderer.java | |||
| @@ -11,7 +11,7 @@ | |||
| 11 | 11 | ||
| 12 | package cuchaz.enigma.gui; | 12 | package cuchaz.enigma.gui; |
| 13 | 13 | ||
| 14 | import cuchaz.enigma.analysis.Token; | 14 | import cuchaz.enigma.source.Token; |
| 15 | 15 | ||
| 16 | import javax.swing.*; | 16 | import javax.swing.*; |
| 17 | import java.awt.*; | 17 | import java.awt.*; |
diff --git a/src/main/java/cuchaz/enigma/config/Config.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/config/Config.java index e116fce..373dcf0 100644 --- a/src/main/java/cuchaz/enigma/config/Config.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/config/Config.java | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | package cuchaz.enigma.config; | 1 | package cuchaz.enigma.gui.config; |
| 2 | 2 | ||
| 3 | import com.bulenkov.darcula.DarculaLaf; | 3 | import com.bulenkov.darcula.DarculaLaf; |
| 4 | import com.google.common.io.Files; | 4 | import com.google.common.io.Files; |
diff --git a/src/main/java/cuchaz/enigma/config/Themes.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/config/Themes.java index 547a420..035b238 100644 --- a/src/main/java/cuchaz/enigma/config/Themes.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/config/Themes.java | |||
| @@ -1,12 +1,9 @@ | |||
| 1 | package cuchaz.enigma.config; | 1 | package cuchaz.enigma.gui.config; |
| 2 | 2 | ||
| 3 | import java.awt.Font; | ||
| 4 | import java.io.IOException; | 3 | import java.io.IOException; |
| 5 | import java.lang.reflect.Field; | ||
| 6 | 4 | ||
| 7 | import javax.swing.SwingUtilities; | 5 | import javax.swing.SwingUtilities; |
| 8 | 6 | ||
| 9 | import com.github.swingdpi.UiDefaultsScaler; | ||
| 10 | import com.google.common.collect.ImmutableMap; | 7 | import com.google.common.collect.ImmutableMap; |
| 11 | import cuchaz.enigma.gui.EnigmaSyntaxKit; | 8 | import cuchaz.enigma.gui.EnigmaSyntaxKit; |
| 12 | import cuchaz.enigma.gui.Gui; | 9 | import cuchaz.enigma.gui.Gui; |
diff --git a/src/main/java/cuchaz/enigma/gui/dialog/AboutDialog.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/AboutDialog.java index 43b8265..fff755d 100644 --- a/src/main/java/cuchaz/enigma/gui/dialog/AboutDialog.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/AboutDialog.java | |||
| @@ -11,7 +11,8 @@ | |||
| 11 | 11 | ||
| 12 | package cuchaz.enigma.gui.dialog; | 12 | package cuchaz.enigma.gui.dialog; |
| 13 | 13 | ||
| 14 | import cuchaz.enigma.Constants; | 14 | import cuchaz.enigma.Enigma; |
| 15 | import cuchaz.enigma.gui.util.GuiUtil; | ||
| 15 | import cuchaz.enigma.utils.I18n; | 16 | import cuchaz.enigma.utils.I18n; |
| 16 | import cuchaz.enigma.gui.util.ScaleUtil; | 17 | import cuchaz.enigma.gui.util.ScaleUtil; |
| 17 | import cuchaz.enigma.utils.Utils; | 18 | import cuchaz.enigma.utils.Utils; |
| @@ -24,14 +25,14 @@ public class AboutDialog { | |||
| 24 | 25 | ||
| 25 | public static void show(JFrame parent) { | 26 | public static void show(JFrame parent) { |
| 26 | // init frame | 27 | // init frame |
| 27 | final JFrame frame = new JFrame(String.format(I18n.translate("menu.help.about.title"), Constants.NAME)); | 28 | final JFrame frame = new JFrame(String.format(I18n.translate("menu.help.about.title"), Enigma.NAME)); |
| 28 | final Container pane = frame.getContentPane(); | 29 | final Container pane = frame.getContentPane(); |
| 29 | pane.setLayout(new FlowLayout()); | 30 | pane.setLayout(new FlowLayout()); |
| 30 | 31 | ||
| 31 | // load the content | 32 | // load the content |
| 32 | try { | 33 | try { |
| 33 | String html = Utils.readResourceToString("/about.html"); | 34 | String html = Utils.readResourceToString("/about.html"); |
| 34 | html = String.format(html, Constants.NAME, Constants.VERSION); | 35 | html = String.format(html, Enigma.NAME, Enigma.VERSION); |
| 35 | JLabel label = new JLabel(html); | 36 | JLabel label = new JLabel(html); |
| 36 | label.setHorizontalAlignment(JLabel.CENTER); | 37 | label.setHorizontalAlignment(JLabel.CENTER); |
| 37 | pane.add(label); | 38 | pane.add(label); |
| @@ -41,9 +42,9 @@ public class AboutDialog { | |||
| 41 | 42 | ||
| 42 | // show the link | 43 | // show the link |
| 43 | String html = "<html><a href=\"%s\">%s</a></html>"; | 44 | String html = "<html><a href=\"%s\">%s</a></html>"; |
| 44 | html = String.format(html, Constants.URL, Constants.URL); | 45 | html = String.format(html, Enigma.URL, Enigma.URL); |
| 45 | JButton link = new JButton(html); | 46 | JButton link = new JButton(html); |
| 46 | link.addActionListener(event -> Utils.openUrl(Constants.URL)); | 47 | link.addActionListener(event -> GuiUtil.openUrl(Enigma.URL)); |
| 47 | link.setBorderPainted(false); | 48 | link.setBorderPainted(false); |
| 48 | link.setOpaque(false); | 49 | link.setOpaque(false); |
| 49 | link.setBackground(Color.WHITE); | 50 | link.setBackground(Color.WHITE); |
diff --git a/src/main/java/cuchaz/enigma/gui/dialog/ChangeDialog.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/ChangeDialog.java index 64219ab..64219ab 100644 --- a/src/main/java/cuchaz/enigma/gui/dialog/ChangeDialog.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/ChangeDialog.java | |||
diff --git a/src/main/java/cuchaz/enigma/gui/dialog/ConnectToServerDialog.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/ConnectToServerDialog.java index c5f505c..c5f505c 100644 --- a/src/main/java/cuchaz/enigma/gui/dialog/ConnectToServerDialog.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/ConnectToServerDialog.java | |||
diff --git a/src/main/java/cuchaz/enigma/gui/dialog/CrashDialog.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/CrashDialog.java index 908b42e..c2a93fa 100644 --- a/src/main/java/cuchaz/enigma/gui/dialog/CrashDialog.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/CrashDialog.java | |||
| @@ -11,10 +11,10 @@ | |||
| 11 | 11 | ||
| 12 | package cuchaz.enigma.gui.dialog; | 12 | package cuchaz.enigma.gui.dialog; |
| 13 | 13 | ||
| 14 | import cuchaz.enigma.Constants; | 14 | import cuchaz.enigma.Enigma; |
| 15 | import cuchaz.enigma.gui.util.GuiUtil; | ||
| 15 | import cuchaz.enigma.utils.I18n; | 16 | import cuchaz.enigma.utils.I18n; |
| 16 | import cuchaz.enigma.gui.util.ScaleUtil; | 17 | import cuchaz.enigma.gui.util.ScaleUtil; |
| 17 | import cuchaz.enigma.utils.Utils; | ||
| 18 | 18 | ||
| 19 | import javax.swing.*; | 19 | import javax.swing.*; |
| 20 | import java.awt.*; | 20 | import java.awt.*; |
| @@ -33,11 +33,11 @@ public class CrashDialog { | |||
| 33 | 33 | ||
| 34 | private CrashDialog(JFrame parent) { | 34 | private CrashDialog(JFrame parent) { |
| 35 | // init frame | 35 | // init frame |
| 36 | frame = new JFrame(String.format(I18n.translate("crash.title"), Constants.NAME)); | 36 | frame = new JFrame(String.format(I18n.translate("crash.title"), Enigma.NAME)); |
| 37 | final Container pane = frame.getContentPane(); | 37 | final Container pane = frame.getContentPane(); |
| 38 | pane.setLayout(new BorderLayout()); | 38 | pane.setLayout(new BorderLayout()); |
| 39 | 39 | ||
| 40 | JLabel label = new JLabel(String.format(I18n.translate("crash.summary"), Constants.NAME)); | 40 | JLabel label = new JLabel(String.format(I18n.translate("crash.summary"), Enigma.NAME)); |
| 41 | label.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); | 41 | label.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); |
| 42 | pane.add(label, BorderLayout.NORTH); | 42 | pane.add(label, BorderLayout.NORTH); |
| 43 | 43 | ||
| @@ -66,7 +66,7 @@ public class CrashDialog { | |||
| 66 | }); | 66 | }); |
| 67 | buttonsPanel.add(exportButton); | 67 | buttonsPanel.add(exportButton); |
| 68 | buttonsPanel.add(Box.createHorizontalGlue()); | 68 | buttonsPanel.add(Box.createHorizontalGlue()); |
| 69 | buttonsPanel.add(Utils.unboldLabel(new JLabel(I18n.translate("crash.exit.warning")))); | 69 | buttonsPanel.add(GuiUtil.unboldLabel(new JLabel(I18n.translate("crash.exit.warning")))); |
| 70 | JButton ignoreButton = new JButton(I18n.translate("crash.ignore")); | 70 | JButton ignoreButton = new JButton(I18n.translate("crash.ignore")); |
| 71 | ignoreButton.addActionListener(event -> { | 71 | ignoreButton.addActionListener(event -> { |
| 72 | // close (hide) the dialog | 72 | // close (hide) the dialog |
diff --git a/src/main/java/cuchaz/enigma/gui/dialog/CreateServerDialog.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/CreateServerDialog.java index eea1dff..eea1dff 100644 --- a/src/main/java/cuchaz/enigma/gui/dialog/CreateServerDialog.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/CreateServerDialog.java | |||
diff --git a/src/main/java/cuchaz/enigma/gui/dialog/JavadocDialog.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/JavadocDialog.java index 7e41441..d81460a 100644 --- a/src/main/java/cuchaz/enigma/gui/dialog/JavadocDialog.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/JavadocDialog.java | |||
| @@ -11,9 +11,9 @@ | |||
| 11 | 11 | ||
| 12 | package cuchaz.enigma.gui.dialog; | 12 | package cuchaz.enigma.gui.dialog; |
| 13 | 13 | ||
| 14 | import cuchaz.enigma.gui.util.GuiUtil; | ||
| 14 | import cuchaz.enigma.utils.I18n; | 15 | import cuchaz.enigma.utils.I18n; |
| 15 | import cuchaz.enigma.gui.util.ScaleUtil; | 16 | import cuchaz.enigma.gui.util.ScaleUtil; |
| 16 | import cuchaz.enigma.utils.Utils; | ||
| 17 | 17 | ||
| 18 | import javax.swing.*; | 18 | import javax.swing.*; |
| 19 | import javax.swing.text.html.HTML; | 19 | import javax.swing.text.html.HTML; |
| @@ -59,7 +59,7 @@ public class JavadocDialog { | |||
| 59 | FlowLayout buttonsLayout = new FlowLayout(); | 59 | FlowLayout buttonsLayout = new FlowLayout(); |
| 60 | buttonsLayout.setAlignment(FlowLayout.RIGHT); | 60 | buttonsLayout.setAlignment(FlowLayout.RIGHT); |
| 61 | buttonsPanel.setLayout(buttonsLayout); | 61 | buttonsPanel.setLayout(buttonsLayout); |
| 62 | buttonsPanel.add(Utils.unboldLabel(new JLabel(I18n.translate("javadocs.instruction")))); | 62 | buttonsPanel.add(GuiUtil.unboldLabel(new JLabel(I18n.translate("javadocs.instruction")))); |
| 63 | JButton cancelButton = new JButton(I18n.translate("javadocs.cancel")); | 63 | JButton cancelButton = new JButton(I18n.translate("javadocs.cancel")); |
| 64 | cancelButton.addActionListener(event -> { | 64 | cancelButton.addActionListener(event -> { |
| 65 | // close (hide) the dialog | 65 | // close (hide) the dialog |
diff --git a/src/main/java/cuchaz/enigma/gui/dialog/ProgressDialog.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/ProgressDialog.java index e33ae82..fa40af7 100644 --- a/src/main/java/cuchaz/enigma/gui/dialog/ProgressDialog.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/ProgressDialog.java | |||
| @@ -11,11 +11,11 @@ | |||
| 11 | 11 | ||
| 12 | package cuchaz.enigma.gui.dialog; | 12 | package cuchaz.enigma.gui.dialog; |
| 13 | 13 | ||
| 14 | import cuchaz.enigma.Constants; | 14 | import cuchaz.enigma.Enigma; |
| 15 | import cuchaz.enigma.ProgressListener; | 15 | import cuchaz.enigma.ProgressListener; |
| 16 | import cuchaz.enigma.gui.util.GuiUtil; | ||
| 16 | import cuchaz.enigma.utils.I18n; | 17 | import cuchaz.enigma.utils.I18n; |
| 17 | import cuchaz.enigma.gui.util.ScaleUtil; | 18 | import cuchaz.enigma.gui.util.ScaleUtil; |
| 18 | import cuchaz.enigma.utils.Utils; | ||
| 19 | 19 | ||
| 20 | import javax.swing.*; | 20 | import javax.swing.*; |
| 21 | import java.awt.*; | 21 | import java.awt.*; |
| @@ -31,7 +31,7 @@ public class ProgressDialog implements ProgressListener, AutoCloseable { | |||
| 31 | public ProgressDialog(JFrame parent) { | 31 | public ProgressDialog(JFrame parent) { |
| 32 | 32 | ||
| 33 | // init frame | 33 | // init frame |
| 34 | this.frame = new JFrame(String.format(I18n.translate("progress.operation"), Constants.NAME)); | 34 | this.frame = new JFrame(String.format(I18n.translate("progress.operation"), Enigma.NAME)); |
| 35 | final Container pane = this.frame.getContentPane(); | 35 | final Container pane = this.frame.getContentPane(); |
| 36 | FlowLayout layout = new FlowLayout(); | 36 | FlowLayout layout = new FlowLayout(); |
| 37 | layout.setAlignment(FlowLayout.LEFT); | 37 | layout.setAlignment(FlowLayout.LEFT); |
| @@ -44,7 +44,7 @@ public class ProgressDialog implements ProgressListener, AutoCloseable { | |||
| 44 | JPanel panel = new JPanel(); | 44 | JPanel panel = new JPanel(); |
| 45 | pane.add(panel); | 45 | pane.add(panel); |
| 46 | panel.setLayout(new BorderLayout()); | 46 | panel.setLayout(new BorderLayout()); |
| 47 | this.labelText = Utils.unboldLabel(new JLabel()); | 47 | this.labelText = GuiUtil.unboldLabel(new JLabel()); |
| 48 | this.progress = new JProgressBar(); | 48 | this.progress = new JProgressBar(); |
| 49 | this.labelText.setBorder(BorderFactory.createEmptyBorder(0, 0, 10, 0)); | 49 | this.labelText.setBorder(BorderFactory.createEmptyBorder(0, 0, 10, 0)); |
| 50 | panel.add(this.labelText, BorderLayout.NORTH); | 50 | panel.add(this.labelText, BorderLayout.NORTH); |
diff --git a/src/main/java/cuchaz/enigma/gui/dialog/SearchDialog.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/SearchDialog.java index b283a37..2d396c3 100644 --- a/src/main/java/cuchaz/enigma/gui/dialog/SearchDialog.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/SearchDialog.java | |||
| @@ -30,8 +30,8 @@ import cuchaz.enigma.gui.util.AbstractListCellRenderer; | |||
| 30 | import cuchaz.enigma.gui.util.ScaleUtil; | 30 | import cuchaz.enigma.gui.util.ScaleUtil; |
| 31 | import cuchaz.enigma.translation.representation.entry.ClassEntry; | 31 | import cuchaz.enigma.translation.representation.entry.ClassEntry; |
| 32 | import cuchaz.enigma.utils.I18n; | 32 | import cuchaz.enigma.utils.I18n; |
| 33 | import cuchaz.enigma.utils.search.SearchEntry; | 33 | import cuchaz.enigma.gui.search.SearchEntry; |
| 34 | import cuchaz.enigma.utils.search.SearchUtil; | 34 | import cuchaz.enigma.gui.search.SearchUtil; |
| 35 | 35 | ||
| 36 | public class SearchDialog { | 36 | public class SearchDialog { |
| 37 | 37 | ||
diff --git a/src/main/java/cuchaz/enigma/gui/dialog/StatsDialog.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/StatsDialog.java index 868eba7..868eba7 100644 --- a/src/main/java/cuchaz/enigma/gui/dialog/StatsDialog.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/StatsDialog.java | |||
diff --git a/src/main/java/cuchaz/enigma/gui/elements/CollapsibleTabbedPane.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/CollapsibleTabbedPane.java index fb497b1..fb497b1 100644 --- a/src/main/java/cuchaz/enigma/gui/elements/CollapsibleTabbedPane.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/CollapsibleTabbedPane.java | |||
diff --git a/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java index dc2cf8f..24f42ff 100644 --- a/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | package cuchaz.enigma.gui.elements; | 1 | package cuchaz.enigma.gui.elements; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.config.Config; | 3 | import cuchaz.enigma.gui.config.Config; |
| 4 | import cuchaz.enigma.config.Themes; | 4 | import cuchaz.enigma.gui.config.Themes; |
| 5 | import cuchaz.enigma.gui.Gui; | 5 | import cuchaz.enigma.gui.Gui; |
| 6 | import cuchaz.enigma.gui.dialog.AboutDialog; | 6 | import cuchaz.enigma.gui.dialog.AboutDialog; |
| 7 | import cuchaz.enigma.gui.dialog.ChangeDialog; | 7 | import cuchaz.enigma.gui.dialog.ChangeDialog; |
diff --git a/src/main/java/cuchaz/enigma/gui/elements/PopupMenuBar.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/PopupMenuBar.java index b92041c..b92041c 100644 --- a/src/main/java/cuchaz/enigma/gui/elements/PopupMenuBar.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/PopupMenuBar.java | |||
diff --git a/src/main/java/cuchaz/enigma/gui/filechooser/FileChooserAny.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/filechooser/FileChooserAny.java index f5f6628..f5f6628 100644 --- a/src/main/java/cuchaz/enigma/gui/filechooser/FileChooserAny.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/filechooser/FileChooserAny.java | |||
diff --git a/src/main/java/cuchaz/enigma/gui/filechooser/FileChooserFile.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/filechooser/FileChooserFile.java index cea11a6..cea11a6 100644 --- a/src/main/java/cuchaz/enigma/gui/filechooser/FileChooserFile.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/filechooser/FileChooserFile.java | |||
diff --git a/src/main/java/cuchaz/enigma/gui/filechooser/FileChooserFolder.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/filechooser/FileChooserFolder.java index c16e0af..c16e0af 100644 --- a/src/main/java/cuchaz/enigma/gui/filechooser/FileChooserFolder.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/filechooser/FileChooserFolder.java | |||
diff --git a/src/main/java/cuchaz/enigma/gui/highlight/BoxHighlightPainter.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/highlight/BoxHighlightPainter.java index cef6494..3ae4380 100644 --- a/src/main/java/cuchaz/enigma/gui/highlight/BoxHighlightPainter.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/highlight/BoxHighlightPainter.java | |||
| @@ -11,7 +11,7 @@ | |||
| 11 | 11 | ||
| 12 | package cuchaz.enigma.gui.highlight; | 12 | package cuchaz.enigma.gui.highlight; |
| 13 | 13 | ||
| 14 | import cuchaz.enigma.config.Config; | 14 | import cuchaz.enigma.gui.config.Config; |
| 15 | 15 | ||
| 16 | import javax.swing.text.BadLocationException; | 16 | import javax.swing.text.BadLocationException; |
| 17 | import javax.swing.text.Highlighter; | 17 | import javax.swing.text.Highlighter; |
diff --git a/src/main/java/cuchaz/enigma/gui/highlight/SelectionHighlightPainter.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/highlight/SelectionHighlightPainter.java index 81a70a9..2e4e462 100644 --- a/src/main/java/cuchaz/enigma/gui/highlight/SelectionHighlightPainter.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/highlight/SelectionHighlightPainter.java | |||
| @@ -11,7 +11,7 @@ | |||
| 11 | 11 | ||
| 12 | package cuchaz.enigma.gui.highlight; | 12 | package cuchaz.enigma.gui.highlight; |
| 13 | 13 | ||
| 14 | import cuchaz.enigma.config.Config; | 14 | import cuchaz.enigma.gui.config.Config; |
| 15 | 15 | ||
| 16 | import javax.swing.text.Highlighter; | 16 | import javax.swing.text.Highlighter; |
| 17 | import javax.swing.text.JTextComponent; | 17 | import javax.swing.text.JTextComponent; |
diff --git a/src/main/java/cuchaz/enigma/gui/highlight/TokenHighlightType.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/highlight/TokenHighlightType.java index ae23f32..ae23f32 100644 --- a/src/main/java/cuchaz/enigma/gui/highlight/TokenHighlightType.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/highlight/TokenHighlightType.java | |||
diff --git a/src/main/java/cuchaz/enigma/gui/node/ClassSelectorClassNode.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/node/ClassSelectorClassNode.java index 922f8f2..922f8f2 100644 --- a/src/main/java/cuchaz/enigma/gui/node/ClassSelectorClassNode.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/node/ClassSelectorClassNode.java | |||
diff --git a/src/main/java/cuchaz/enigma/gui/node/ClassSelectorPackageNode.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/node/ClassSelectorPackageNode.java index caa985c..caa985c 100644 --- a/src/main/java/cuchaz/enigma/gui/node/ClassSelectorPackageNode.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/node/ClassSelectorPackageNode.java | |||
diff --git a/src/main/java/cuchaz/enigma/gui/panels/PanelDeobf.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/PanelDeobf.java index c24226b..c24226b 100644 --- a/src/main/java/cuchaz/enigma/gui/panels/PanelDeobf.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/PanelDeobf.java | |||
diff --git a/src/main/java/cuchaz/enigma/gui/panels/PanelEditor.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/PanelEditor.java index 8637afd..346d665 100644 --- a/src/main/java/cuchaz/enigma/gui/panels/PanelEditor.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/PanelEditor.java | |||
| @@ -2,7 +2,7 @@ package cuchaz.enigma.gui.panels; | |||
| 2 | 2 | ||
| 3 | import cuchaz.enigma.EnigmaProject; | 3 | import cuchaz.enigma.EnigmaProject; |
| 4 | import cuchaz.enigma.analysis.EntryReference; | 4 | import cuchaz.enigma.analysis.EntryReference; |
| 5 | import cuchaz.enigma.config.Config; | 5 | import cuchaz.enigma.gui.config.Config; |
| 6 | import cuchaz.enigma.gui.BrowserCaret; | 6 | import cuchaz.enigma.gui.BrowserCaret; |
| 7 | import cuchaz.enigma.gui.Gui; | 7 | import cuchaz.enigma.gui.Gui; |
| 8 | import cuchaz.enigma.translation.representation.entry.ClassEntry; | 8 | import cuchaz.enigma.translation.representation.entry.ClassEntry; |
diff --git a/src/main/java/cuchaz/enigma/gui/panels/PanelIdentifier.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/PanelIdentifier.java index de069bc..8c19efb 100644 --- a/src/main/java/cuchaz/enigma/gui/panels/PanelIdentifier.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/PanelIdentifier.java | |||
| @@ -1,9 +1,9 @@ | |||
| 1 | package cuchaz.enigma.gui.panels; | 1 | package cuchaz.enigma.gui.panels; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.gui.Gui; | 3 | import cuchaz.enigma.gui.Gui; |
| 4 | import cuchaz.enigma.gui.util.GuiUtil; | ||
| 4 | import cuchaz.enigma.utils.I18n; | 5 | import cuchaz.enigma.utils.I18n; |
| 5 | import cuchaz.enigma.gui.util.ScaleUtil; | 6 | import cuchaz.enigma.gui.util.ScaleUtil; |
| 6 | import cuchaz.enigma.utils.Utils; | ||
| 7 | 7 | ||
| 8 | import javax.swing.*; | 8 | import javax.swing.*; |
| 9 | import java.awt.*; | 9 | import java.awt.*; |
| @@ -23,7 +23,7 @@ public class PanelIdentifier extends JPanel { | |||
| 23 | public void clearReference() { | 23 | public void clearReference() { |
| 24 | this.removeAll(); | 24 | this.removeAll(); |
| 25 | JLabel label = new JLabel(I18n.translate("info_panel.identifier.none")); | 25 | JLabel label = new JLabel(I18n.translate("info_panel.identifier.none")); |
| 26 | Utils.unboldLabel(label); | 26 | GuiUtil.unboldLabel(label); |
| 27 | label.setHorizontalAlignment(JLabel.CENTER); | 27 | label.setHorizontalAlignment(JLabel.CENTER); |
| 28 | this.add(label); | 28 | this.add(label); |
| 29 | 29 | ||
diff --git a/src/main/java/cuchaz/enigma/gui/panels/PanelObf.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/PanelObf.java index dd7f9f9..dd7f9f9 100644 --- a/src/main/java/cuchaz/enigma/gui/panels/PanelObf.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/PanelObf.java | |||
diff --git a/src/main/java/cuchaz/enigma/utils/search/SearchEntry.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/search/SearchEntry.java index 48b255f..91727c3 100644 --- a/src/main/java/cuchaz/enigma/utils/search/SearchEntry.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/search/SearchEntry.java | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | package cuchaz.enigma.utils.search; | 1 | package cuchaz.enigma.gui.search; |
| 2 | 2 | ||
| 3 | import java.util.List; | 3 | import java.util.List; |
| 4 | 4 | ||
diff --git a/src/main/java/cuchaz/enigma/utils/search/SearchUtil.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/search/SearchUtil.java index a51afbb..a3b35fa 100644 --- a/src/main/java/cuchaz/enigma/utils/search/SearchUtil.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/search/SearchUtil.java | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | package cuchaz.enigma.utils.search; | 1 | package cuchaz.enigma.gui.search; |
| 2 | 2 | ||
| 3 | import java.util.*; | 3 | import java.util.*; |
| 4 | import java.util.concurrent.Executor; | 4 | import java.util.concurrent.Executor; |
diff --git a/src/main/java/cuchaz/enigma/gui/stats/StatsGenerator.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/stats/StatsGenerator.java index e783530..d7f7ec0 100644 --- a/src/main/java/cuchaz/enigma/gui/stats/StatsGenerator.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/stats/StatsGenerator.java | |||
| @@ -46,7 +46,7 @@ public class StatsGenerator { | |||
| 46 | totalWork += entryIndex.getClasses().size(); | 46 | totalWork += entryIndex.getClasses().size(); |
| 47 | } | 47 | } |
| 48 | 48 | ||
| 49 | progress.init(totalWork, I18n.translate("progress.stats")); | 49 | progress.init(totalWork, "progress.stats"); |
| 50 | 50 | ||
| 51 | Map<String, Integer> counts = new HashMap<>(); | 51 | Map<String, Integer> counts = new HashMap<>(); |
| 52 | 52 | ||
diff --git a/src/main/java/cuchaz/enigma/gui/stats/StatsMember.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/stats/StatsMember.java index 70b4f40..70b4f40 100644 --- a/src/main/java/cuchaz/enigma/gui/stats/StatsMember.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/stats/StatsMember.java | |||
diff --git a/src/main/java/cuchaz/enigma/gui/util/AbstractListCellRenderer.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/util/AbstractListCellRenderer.java index 612e3e9..612e3e9 100644 --- a/src/main/java/cuchaz/enigma/gui/util/AbstractListCellRenderer.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/util/AbstractListCellRenderer.java | |||
diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/util/GuiUtil.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/util/GuiUtil.java new file mode 100644 index 0000000..70172fe --- /dev/null +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/util/GuiUtil.java | |||
| @@ -0,0 +1,56 @@ | |||
| 1 | package cuchaz.enigma.gui.util; | ||
| 2 | |||
| 3 | import javax.swing.*; | ||
| 4 | import javax.swing.text.BadLocationException; | ||
| 5 | import javax.swing.text.JTextComponent; | ||
| 6 | import java.awt.*; | ||
| 7 | import java.awt.event.MouseEvent; | ||
| 8 | import java.io.IOException; | ||
| 9 | import java.net.URI; | ||
| 10 | import java.net.URISyntaxException; | ||
| 11 | import java.util.Locale; | ||
| 12 | import java.util.StringJoiner; | ||
| 13 | |||
| 14 | public class GuiUtil { | ||
| 15 | public static void openUrl(String url) { | ||
| 16 | if (Desktop.isDesktopSupported()) { | ||
| 17 | Desktop desktop = Desktop.getDesktop(); | ||
| 18 | try { | ||
| 19 | desktop.browse(new URI(url)); | ||
| 20 | } catch (IOException ex) { | ||
| 21 | throw new Error(ex); | ||
| 22 | } catch (URISyntaxException ex) { | ||
| 23 | throw new IllegalArgumentException(ex); | ||
| 24 | } | ||
| 25 | } | ||
| 26 | } | ||
| 27 | |||
| 28 | public static JLabel unboldLabel(JLabel label) { | ||
| 29 | Font font = label.getFont(); | ||
| 30 | label.setFont(font.deriveFont(font.getStyle() & ~Font.BOLD)); | ||
| 31 | return label; | ||
| 32 | } | ||
| 33 | |||
| 34 | public static void showToolTipNow(JComponent component) { | ||
| 35 | // HACKHACK: trick the tooltip manager into showing the tooltip right now | ||
| 36 | ToolTipManager manager = ToolTipManager.sharedInstance(); | ||
| 37 | int oldDelay = manager.getInitialDelay(); | ||
| 38 | manager.setInitialDelay(0); | ||
| 39 | manager.mouseMoved(new MouseEvent(component, MouseEvent.MOUSE_MOVED, System.currentTimeMillis(), 0, 0, 0, 0, false)); | ||
| 40 | manager.setInitialDelay(oldDelay); | ||
| 41 | } | ||
| 42 | |||
| 43 | public static Rectangle safeModelToView(JTextComponent component, int modelPos) { | ||
| 44 | if (modelPos < 0) { | ||
| 45 | modelPos = 0; | ||
| 46 | } else if (modelPos >= component.getText().length()) { | ||
| 47 | modelPos = component.getText().length(); | ||
| 48 | } | ||
| 49 | try { | ||
| 50 | return component.modelToView(modelPos); | ||
| 51 | } catch (BadLocationException e) { | ||
| 52 | throw new RuntimeException(e); | ||
| 53 | } | ||
| 54 | } | ||
| 55 | |||
| 56 | } | ||
diff --git a/src/main/java/cuchaz/enigma/gui/util/History.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/util/History.java index 94f3105..b128699 100644 --- a/src/main/java/cuchaz/enigma/gui/util/History.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/util/History.java | |||
| @@ -1,49 +1,49 @@ | |||
| 1 | package cuchaz.enigma.gui.util; | 1 | package cuchaz.enigma.gui.util; |
| 2 | 2 | ||
| 3 | import com.google.common.collect.Queues; | 3 | import com.google.common.collect.Queues; |
| 4 | 4 | ||
| 5 | import java.util.Deque; | 5 | import java.util.Deque; |
| 6 | 6 | ||
| 7 | public class History<T> { | 7 | public class History<T> { |
| 8 | private final Deque<T> previous = Queues.newArrayDeque(); | 8 | private final Deque<T> previous = Queues.newArrayDeque(); |
| 9 | private final Deque<T> next = Queues.newArrayDeque(); | 9 | private final Deque<T> next = Queues.newArrayDeque(); |
| 10 | private T current; | 10 | private T current; |
| 11 | 11 | ||
| 12 | public History(T initial) { | 12 | public History(T initial) { |
| 13 | current = initial; | 13 | current = initial; |
| 14 | } | 14 | } |
| 15 | 15 | ||
| 16 | public T getCurrent() { | 16 | public T getCurrent() { |
| 17 | return current; | 17 | return current; |
| 18 | } | 18 | } |
| 19 | 19 | ||
| 20 | public void push(T value) { | 20 | public void push(T value) { |
| 21 | previous.addLast(current); | 21 | previous.addLast(current); |
| 22 | current = value; | 22 | current = value; |
| 23 | next.clear(); | 23 | next.clear(); |
| 24 | } | 24 | } |
| 25 | 25 | ||
| 26 | public void replace(T value) { | 26 | public void replace(T value) { |
| 27 | current = value; | 27 | current = value; |
| 28 | } | 28 | } |
| 29 | 29 | ||
| 30 | public boolean canGoBack() { | 30 | public boolean canGoBack() { |
| 31 | return !previous.isEmpty(); | 31 | return !previous.isEmpty(); |
| 32 | } | 32 | } |
| 33 | 33 | ||
| 34 | public T goBack() { | 34 | public T goBack() { |
| 35 | next.addFirst(current); | 35 | next.addFirst(current); |
| 36 | current = previous.removeLast(); | 36 | current = previous.removeLast(); |
| 37 | return current; | 37 | return current; |
| 38 | } | 38 | } |
| 39 | 39 | ||
| 40 | public boolean canGoForward() { | 40 | public boolean canGoForward() { |
| 41 | return !next.isEmpty(); | 41 | return !next.isEmpty(); |
| 42 | } | 42 | } |
| 43 | 43 | ||
| 44 | public T goForward() { | 44 | public T goForward() { |
| 45 | previous.addLast(current); | 45 | previous.addLast(current); |
| 46 | current = next.removeFirst(); | 46 | current = next.removeFirst(); |
| 47 | return current; | 47 | return current; |
| 48 | } | 48 | } |
| 49 | } | 49 | } |
diff --git a/src/main/java/cuchaz/enigma/gui/util/ScaleChangeListener.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/util/ScaleChangeListener.java index d045c6d..d045c6d 100644 --- a/src/main/java/cuchaz/enigma/gui/util/ScaleChangeListener.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/util/ScaleChangeListener.java | |||
diff --git a/src/main/java/cuchaz/enigma/gui/util/ScaleUtil.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/util/ScaleUtil.java index 9f722e9..e7ee565 100644 --- a/src/main/java/cuchaz/enigma/gui/util/ScaleUtil.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/util/ScaleUtil.java | |||
| @@ -16,7 +16,7 @@ import com.github.swingdpi.plaf.BasicTweaker; | |||
| 16 | import com.github.swingdpi.plaf.MetalTweaker; | 16 | import com.github.swingdpi.plaf.MetalTweaker; |
| 17 | import com.github.swingdpi.plaf.NimbusTweaker; | 17 | import com.github.swingdpi.plaf.NimbusTweaker; |
| 18 | import com.github.swingdpi.plaf.WindowsTweaker; | 18 | import com.github.swingdpi.plaf.WindowsTweaker; |
| 19 | import cuchaz.enigma.config.Config; | 19 | import cuchaz.enigma.gui.config.Config; |
| 20 | import de.sciss.syntaxpane.DefaultSyntaxKit; | 20 | import de.sciss.syntaxpane.DefaultSyntaxKit; |
| 21 | 21 | ||
| 22 | public class ScaleUtil { | 22 | public class ScaleUtil { |
diff --git a/src/main/resources/about.html b/enigma-swing/src/main/resources/about.html index b75c1bf..b75c1bf 100644 --- a/src/main/resources/about.html +++ b/enigma-swing/src/main/resources/about.html | |||
diff --git a/src/main/resources/stats.html b/enigma-swing/src/main/resources/stats.html index fcff7c0..fcff7c0 100644 --- a/src/main/resources/stats.html +++ b/enigma-swing/src/main/resources/stats.html | |||
diff --git a/enigma/build.gradle b/enigma/build.gradle new file mode 100644 index 0000000..7cebcd1 --- /dev/null +++ b/enigma/build.gradle | |||
| @@ -0,0 +1,63 @@ | |||
| 1 | configurations { | ||
| 2 | proGuard | ||
| 3 | } | ||
| 4 | |||
| 5 | dependencies { | ||
| 6 | implementation 'org.ow2.asm:asm:8.0' | ||
| 7 | implementation 'org.ow2.asm:asm-commons:8.0' | ||
| 8 | implementation 'org.ow2.asm:asm-tree:8.0' | ||
| 9 | implementation 'org.ow2.asm:asm-util:8.0' | ||
| 10 | |||
| 11 | implementation 'net.fabricmc:procyon-fabric-compilertools:0.5.35.13' | ||
| 12 | implementation 'net.fabricmc:cfr:0.0.1' | ||
| 13 | |||
| 14 | testImplementation 'junit:junit:4.+' | ||
| 15 | testImplementation 'org.hamcrest:hamcrest-all:1.+' | ||
| 16 | proGuard 'net.sf.proguard:proguard-base:6.+' | ||
| 17 | } | ||
| 18 | |||
| 19 | // Generate "version.txt" file | ||
| 20 | |||
| 21 | ext.genOutputDir = file("$buildDir/generated-resources") | ||
| 22 | |||
| 23 | task generateVersionFile { | ||
| 24 | ext.outputFile = file("$genOutputDir/version.txt") | ||
| 25 | outputs.file(outputFile) | ||
| 26 | doLast { | ||
| 27 | outputFile.text = "${project.version}" | ||
| 28 | } | ||
| 29 | } | ||
| 30 | |||
| 31 | sourceSets.main.output.dir genOutputDir, builtBy: generateVersionFile | ||
| 32 | |||
| 33 | // Generate obfuscated JARs for tests | ||
| 34 | |||
| 35 | def libraryJarsArg = JavaVersion.current().java9Compatible ? "<java.home>/jmods" : "<java.home>/lib/rt.jar" | ||
| 36 | |||
| 37 | file('src/test/java/cuchaz/enigma/inputs').listFiles().each { theFile -> | ||
| 38 | if (theFile.directory) { | ||
| 39 | task("${theFile.name}TestJar", type: Jar) { | ||
| 40 | from(sourceSets.test.output) { | ||
| 41 | include "cuchaz/enigma/inputs/$theFile.name/**/*.class" | ||
| 42 | include 'cuchaz/enigma/inputs/Keep.class' | ||
| 43 | } | ||
| 44 | |||
| 45 | archiveFileName = theFile.name + '.jar' | ||
| 46 | destinationDirectory = file('build/test-inputs') | ||
| 47 | } | ||
| 48 | |||
| 49 | task("${theFile.name}TestObf", type: JavaExec, | ||
| 50 | dependsOn: "${theFile.name}TestJar") { | ||
| 51 | main 'proguard.ProGuard' | ||
| 52 | classpath configurations.proGuard | ||
| 53 | |||
| 54 | args '@src/test/resources/proguard-test.conf', '-injars', file('build/test-inputs/' + | ||
| 55 | "${theFile.name}.jar"), '-libraryjars', libraryJarsArg, | ||
| 56 | '-outjars', file('build/test-obf/' + "${theFile.name}.jar") | ||
| 57 | } | ||
| 58 | |||
| 59 | test.dependsOn "${theFile.name}TestObf" | ||
| 60 | } | ||
| 61 | } | ||
| 62 | |||
| 63 | test.dependsOn 'translationTestObf' | ||
diff --git a/src/main/java/cuchaz/enigma/ClassProvider.java b/enigma/src/main/java/cuchaz/enigma/ClassProvider.java index 2b91379..2b91379 100644 --- a/src/main/java/cuchaz/enigma/ClassProvider.java +++ b/enigma/src/main/java/cuchaz/enigma/ClassProvider.java | |||
diff --git a/src/main/java/cuchaz/enigma/Enigma.java b/enigma/src/main/java/cuchaz/enigma/Enigma.java index f5f0649..73c9a09 100644 --- a/src/main/java/cuchaz/enigma/Enigma.java +++ b/enigma/src/main/java/cuchaz/enigma/Enigma.java | |||
| @@ -22,6 +22,7 @@ import cuchaz.enigma.api.service.EnigmaServiceFactory; | |||
| 22 | import cuchaz.enigma.api.service.EnigmaServiceType; | 22 | import cuchaz.enigma.api.service.EnigmaServiceType; |
| 23 | import cuchaz.enigma.api.service.JarIndexerService; | 23 | import cuchaz.enigma.api.service.JarIndexerService; |
| 24 | import cuchaz.enigma.utils.Utils; | 24 | import cuchaz.enigma.utils.Utils; |
| 25 | import org.objectweb.asm.Opcodes; | ||
| 25 | 26 | ||
| 26 | import java.io.IOException; | 27 | import java.io.IOException; |
| 27 | import java.nio.file.Path; | 28 | import java.nio.file.Path; |
| @@ -29,7 +30,12 @@ import java.util.List; | |||
| 29 | import java.util.ServiceLoader; | 30 | import java.util.ServiceLoader; |
| 30 | 31 | ||
| 31 | public class Enigma { | 32 | public class Enigma { |
| 32 | private final EnigmaProfile profile; | 33 | public static final String NAME = "Enigma"; |
| 34 | public static final String VERSION; | ||
| 35 | public static final String URL = "https://fabricmc.net"; | ||
| 36 | public static final int ASM_VERSION = Opcodes.ASM8; | ||
| 37 | |||
| 38 | private final EnigmaProfile profile; | ||
| 33 | private final EnigmaServices services; | 39 | private final EnigmaServices services; |
| 34 | 40 | ||
| 35 | private Enigma(EnigmaProfile profile, EnigmaServices services) { | 41 | private Enigma(EnigmaProfile profile, EnigmaServices services) { |
| @@ -118,4 +124,16 @@ public class Enigma { | |||
| 118 | return new EnigmaServices(services.build()); | 124 | return new EnigmaServices(services.build()); |
| 119 | } | 125 | } |
| 120 | } | 126 | } |
| 127 | |||
| 128 | static { | ||
| 129 | String version = null; | ||
| 130 | |||
| 131 | try { | ||
| 132 | version = Utils.readResourceToString("/version.txt"); | ||
| 133 | } catch (Throwable t) { | ||
| 134 | version = "Unknown Version"; | ||
| 135 | } | ||
| 136 | |||
| 137 | VERSION = version; | ||
| 138 | } | ||
| 121 | } | 139 | } |
diff --git a/src/main/java/cuchaz/enigma/EnigmaProfile.java b/enigma/src/main/java/cuchaz/enigma/EnigmaProfile.java index 09b90f5..daf2727 100644 --- a/src/main/java/cuchaz/enigma/EnigmaProfile.java +++ b/enigma/src/main/java/cuchaz/enigma/EnigmaProfile.java | |||
| @@ -11,8 +11,8 @@ import com.google.gson.JsonParseException; | |||
| 11 | import com.google.gson.annotations.SerializedName; | 11 | import com.google.gson.annotations.SerializedName; |
| 12 | import com.google.gson.reflect.TypeToken; | 12 | import com.google.gson.reflect.TypeToken; |
| 13 | import cuchaz.enigma.api.service.EnigmaServiceType; | 13 | import cuchaz.enigma.api.service.EnigmaServiceType; |
| 14 | import cuchaz.enigma.translation.mapping.MappingFileNameFormat; | 14 | import cuchaz.enigma.translation.mapping.serde.MappingFileNameFormat; |
| 15 | import cuchaz.enigma.translation.mapping.MappingSaveParameters; | 15 | import cuchaz.enigma.translation.mapping.serde.MappingSaveParameters; |
| 16 | 16 | ||
| 17 | import javax.annotation.Nullable; | 17 | import javax.annotation.Nullable; |
| 18 | import java.io.BufferedReader; | 18 | import java.io.BufferedReader; |
| @@ -54,7 +54,7 @@ public final class EnigmaProfile { | |||
| 54 | return EnigmaProfile.parse(reader); | 54 | return EnigmaProfile.parse(reader); |
| 55 | } | 55 | } |
| 56 | } else { | 56 | } else { |
| 57 | try (BufferedReader reader = new BufferedReader(new InputStreamReader(Main.class.getResourceAsStream("/profile.json"), StandardCharsets.UTF_8))) { | 57 | try (BufferedReader reader = new BufferedReader(new InputStreamReader(EnigmaProfile.class.getResourceAsStream("/profile.json"), StandardCharsets.UTF_8))) { |
| 58 | return EnigmaProfile.parse(reader); | 58 | return EnigmaProfile.parse(reader); |
| 59 | } catch (IOException ex) { | 59 | } catch (IOException ex) { |
| 60 | System.err.println("Failed to load default profile, will use empty profile: " + ex.getMessage()); | 60 | System.err.println("Failed to load default profile, will use empty profile: " + ex.getMessage()); |
diff --git a/src/main/java/cuchaz/enigma/EnigmaProject.java b/enigma/src/main/java/cuchaz/enigma/EnigmaProject.java index b345fb3..43ea14e 100644 --- a/src/main/java/cuchaz/enigma/EnigmaProject.java +++ b/enigma/src/main/java/cuchaz/enigma/EnigmaProject.java | |||
| @@ -8,8 +8,8 @@ import cuchaz.enigma.analysis.index.JarIndex; | |||
| 8 | import cuchaz.enigma.api.service.NameProposalService; | 8 | import cuchaz.enigma.api.service.NameProposalService; |
| 9 | import cuchaz.enigma.bytecode.translators.SourceFixVisitor; | 9 | import cuchaz.enigma.bytecode.translators.SourceFixVisitor; |
| 10 | import cuchaz.enigma.bytecode.translators.TranslationClassVisitor; | 10 | import cuchaz.enigma.bytecode.translators.TranslationClassVisitor; |
| 11 | import cuchaz.enigma.network.EnigmaServer; | ||
| 12 | import cuchaz.enigma.source.*; | 11 | import cuchaz.enigma.source.*; |
| 12 | import cuchaz.enigma.translation.ProposingTranslator; | ||
| 13 | import cuchaz.enigma.translation.Translator; | 13 | import cuchaz.enigma.translation.Translator; |
| 14 | import cuchaz.enigma.translation.mapping.*; | 14 | import cuchaz.enigma.translation.mapping.*; |
| 15 | import cuchaz.enigma.translation.mapping.tree.DeltaTrackingTree; | 15 | import cuchaz.enigma.translation.mapping.tree.DeltaTrackingTree; |
| @@ -20,9 +20,7 @@ import cuchaz.enigma.translation.representation.entry.LocalVariableEntry; | |||
| 20 | import cuchaz.enigma.translation.representation.entry.MethodEntry; | 20 | import cuchaz.enigma.translation.representation.entry.MethodEntry; |
| 21 | import cuchaz.enigma.utils.I18n; | 21 | import cuchaz.enigma.utils.I18n; |
| 22 | 22 | ||
| 23 | import cuchaz.enigma.utils.Utils; | ||
| 24 | import org.objectweb.asm.ClassWriter; | 23 | import org.objectweb.asm.ClassWriter; |
| 25 | import org.objectweb.asm.Opcodes; | ||
| 26 | import org.objectweb.asm.tree.ClassNode; | 24 | import org.objectweb.asm.tree.ClassNode; |
| 27 | 25 | ||
| 28 | import java.io.*; | 26 | import java.io.*; |
| @@ -46,7 +44,7 @@ public class EnigmaProject { | |||
| 46 | private EntryRemapper mapper; | 44 | private EntryRemapper mapper; |
| 47 | 45 | ||
| 48 | public EnigmaProject(Enigma enigma, ClassCache classCache, JarIndex jarIndex, byte[] jarChecksum) { | 46 | public EnigmaProject(Enigma enigma, ClassCache classCache, JarIndex jarIndex, byte[] jarChecksum) { |
| 49 | Preconditions.checkArgument(jarChecksum.length == EnigmaServer.CHECKSUM_SIZE); | 47 | Preconditions.checkArgument(jarChecksum.length == 20); |
| 50 | this.enigma = enigma; | 48 | this.enigma = enigma; |
| 51 | this.classCache = classCache; | 49 | this.classCache = classCache; |
| 52 | this.jarIndex = jarIndex; | 50 | this.jarIndex = jarIndex; |
| @@ -105,6 +103,20 @@ public class EnigmaProject { | |||
| 105 | return droppedMappings.keySet(); | 103 | return droppedMappings.keySet(); |
| 106 | } | 104 | } |
| 107 | 105 | ||
| 106 | public Decompiler createDecompiler(DecompilerService decompilerService) { | ||
| 107 | return decompilerService.create(name -> { | ||
| 108 | ClassNode node = this.getClassCache().getClassNode(name); | ||
| 109 | |||
| 110 | if (node == null) { | ||
| 111 | return null; | ||
| 112 | } | ||
| 113 | |||
| 114 | ClassNode fixedNode = new ClassNode(); | ||
| 115 | node.accept(new SourceFixVisitor(Enigma.ASM_VERSION, fixedNode, getJarIndex())); | ||
| 116 | return fixedNode; | ||
| 117 | }, new SourceSettings(true, true)); | ||
| 118 | } | ||
| 119 | |||
| 108 | public boolean isRenamable(Entry<?> obfEntry) { | 120 | public boolean isRenamable(Entry<?> obfEntry) { |
| 109 | if (obfEntry instanceof MethodEntry) { | 121 | if (obfEntry instanceof MethodEntry) { |
| 110 | // HACKHACK: Object methods are not obfuscated identifiers | 122 | // HACKHACK: Object methods are not obfuscated identifiers |
| @@ -162,7 +174,7 @@ public class EnigmaProject { | |||
| 162 | ClassNode node = classCache.getClassNode(entry.getFullName()); | 174 | ClassNode node = classCache.getClassNode(entry.getFullName()); |
| 163 | if (node != null) { | 175 | if (node != null) { |
| 164 | ClassNode translatedNode = new ClassNode(); | 176 | ClassNode translatedNode = new ClassNode(); |
| 165 | node.accept(new TranslationClassVisitor(deobfuscator, Utils.ASM_VERSION, new SourceFixVisitor(Utils.ASM_VERSION, translatedNode, jarIndex))); | 177 | node.accept(new TranslationClassVisitor(deobfuscator, Enigma.ASM_VERSION, new SourceFixVisitor(Enigma.ASM_VERSION, translatedNode, jarIndex))); |
| 166 | return translatedNode; | 178 | return translatedNode; |
| 167 | } | 179 | } |
| 168 | 180 | ||
diff --git a/src/main/java/cuchaz/enigma/EnigmaServices.java b/enigma/src/main/java/cuchaz/enigma/EnigmaServices.java index df3b7bb..df3b7bb 100644 --- a/src/main/java/cuchaz/enigma/EnigmaServices.java +++ b/enigma/src/main/java/cuchaz/enigma/EnigmaServices.java | |||
diff --git a/src/main/java/cuchaz/enigma/ProgressListener.java b/enigma/src/main/java/cuchaz/enigma/ProgressListener.java index 6da3b81..6da3b81 100644 --- a/src/main/java/cuchaz/enigma/ProgressListener.java +++ b/enigma/src/main/java/cuchaz/enigma/ProgressListener.java | |||
diff --git a/src/main/java/cuchaz/enigma/analysis/Access.java b/enigma/src/main/java/cuchaz/enigma/analysis/Access.java index 82ca669..82ca669 100644 --- a/src/main/java/cuchaz/enigma/analysis/Access.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/Access.java | |||
diff --git a/src/main/java/cuchaz/enigma/analysis/BuiltinPlugin.java b/enigma/src/main/java/cuchaz/enigma/analysis/BuiltinPlugin.java index dc3f553..4685b39 100644 --- a/src/main/java/cuchaz/enigma/analysis/BuiltinPlugin.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/BuiltinPlugin.java | |||
| @@ -1,18 +1,17 @@ | |||
| 1 | package cuchaz.enigma.analysis; | 1 | package cuchaz.enigma.analysis; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.Enigma; | ||
| 3 | import cuchaz.enigma.api.EnigmaPlugin; | 4 | import cuchaz.enigma.api.EnigmaPlugin; |
| 4 | import cuchaz.enigma.api.EnigmaPluginContext; | 5 | import cuchaz.enigma.api.EnigmaPluginContext; |
| 5 | import cuchaz.enigma.api.service.JarIndexerService; | 6 | import cuchaz.enigma.api.service.JarIndexerService; |
| 6 | import cuchaz.enigma.api.service.NameProposalService; | 7 | import cuchaz.enigma.api.service.NameProposalService; |
| 7 | import cuchaz.enigma.source.DecompilerService; | 8 | import cuchaz.enigma.source.DecompilerService; |
| 8 | import cuchaz.enigma.source.Decompilers; | 9 | import cuchaz.enigma.source.Decompilers; |
| 9 | import cuchaz.enigma.source.procyon.ProcyonDecompiler; | ||
| 10 | import cuchaz.enigma.translation.representation.TypeDescriptor; | 10 | import cuchaz.enigma.translation.representation.TypeDescriptor; |
| 11 | import cuchaz.enigma.translation.representation.entry.ClassEntry; | 11 | import cuchaz.enigma.translation.representation.entry.ClassEntry; |
| 12 | import cuchaz.enigma.translation.representation.entry.Entry; | 12 | import cuchaz.enigma.translation.representation.entry.Entry; |
| 13 | import cuchaz.enigma.translation.representation.entry.FieldEntry; | 13 | import cuchaz.enigma.translation.representation.entry.FieldEntry; |
| 14 | import cuchaz.enigma.utils.Pair; | 14 | import cuchaz.enigma.utils.Pair; |
| 15 | import cuchaz.enigma.utils.Utils; | ||
| 16 | import org.objectweb.asm.ClassReader; | 15 | import org.objectweb.asm.ClassReader; |
| 17 | import org.objectweb.asm.ClassVisitor; | 16 | import org.objectweb.asm.ClassVisitor; |
| 18 | import org.objectweb.asm.FieldVisitor; | 17 | import org.objectweb.asm.FieldVisitor; |
| @@ -70,7 +69,7 @@ public final class BuiltinPlugin implements EnigmaPlugin { | |||
| 70 | private final List<MethodNode> classInits = new ArrayList<>(); | 69 | private final List<MethodNode> classInits = new ArrayList<>(); |
| 71 | 70 | ||
| 72 | EnumFieldNameFindingVisitor(Map<Entry<?>, String> mappings) { | 71 | EnumFieldNameFindingVisitor(Map<Entry<?>, String> mappings) { |
| 73 | super(Utils.ASM_VERSION); | 72 | super(Enigma.ASM_VERSION); |
| 74 | this.mappings = mappings; | 73 | this.mappings = mappings; |
| 75 | } | 74 | } |
| 76 | 75 | ||
diff --git a/src/main/java/cuchaz/enigma/analysis/ClassCache.java b/enigma/src/main/java/cuchaz/enigma/analysis/ClassCache.java index f694bf3..a3d24e3 100644 --- a/src/main/java/cuchaz/enigma/analysis/ClassCache.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/ClassCache.java | |||
| @@ -4,13 +4,12 @@ import com.google.common.cache.Cache; | |||
| 4 | import com.google.common.cache.CacheBuilder; | 4 | import com.google.common.cache.CacheBuilder; |
| 5 | import com.google.common.collect.ImmutableSet; | 5 | import com.google.common.collect.ImmutableSet; |
| 6 | import cuchaz.enigma.ClassProvider; | 6 | import cuchaz.enigma.ClassProvider; |
| 7 | import cuchaz.enigma.Enigma; | ||
| 7 | import cuchaz.enigma.ProgressListener; | 8 | import cuchaz.enigma.ProgressListener; |
| 8 | import cuchaz.enigma.analysis.index.JarIndex; | 9 | import cuchaz.enigma.analysis.index.JarIndex; |
| 9 | import cuchaz.enigma.bytecode.translators.LocalVariableFixVisitor; | 10 | import cuchaz.enigma.bytecode.translators.LocalVariableFixVisitor; |
| 10 | import cuchaz.enigma.utils.Utils; | ||
| 11 | import org.objectweb.asm.ClassReader; | 11 | import org.objectweb.asm.ClassReader; |
| 12 | import org.objectweb.asm.ClassVisitor; | 12 | import org.objectweb.asm.ClassVisitor; |
| 13 | import org.objectweb.asm.Opcodes; | ||
| 14 | import org.objectweb.asm.tree.ClassNode; | 13 | import org.objectweb.asm.tree.ClassNode; |
| 15 | 14 | ||
| 16 | import javax.annotation.Nullable; | 15 | import javax.annotation.Nullable; |
| @@ -78,7 +77,7 @@ public final class ClassCache implements AutoCloseable, ClassProvider { | |||
| 78 | 77 | ||
| 79 | ClassNode node = new ClassNode(); | 78 | ClassNode node = new ClassNode(); |
| 80 | 79 | ||
| 81 | LocalVariableFixVisitor visitor = new LocalVariableFixVisitor(Utils.ASM_VERSION, node); | 80 | LocalVariableFixVisitor visitor = new LocalVariableFixVisitor(Enigma.ASM_VERSION, node); |
| 82 | reader.accept(visitor, 0); | 81 | reader.accept(visitor, 0); |
| 83 | 82 | ||
| 84 | return node; | 83 | return node; |
diff --git a/src/main/java/cuchaz/enigma/analysis/ClassImplementationsTreeNode.java b/enigma/src/main/java/cuchaz/enigma/analysis/ClassImplementationsTreeNode.java index 0fc44ca..0fc44ca 100644 --- a/src/main/java/cuchaz/enigma/analysis/ClassImplementationsTreeNode.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/ClassImplementationsTreeNode.java | |||
diff --git a/src/main/java/cuchaz/enigma/analysis/ClassInheritanceTreeNode.java b/enigma/src/main/java/cuchaz/enigma/analysis/ClassInheritanceTreeNode.java index 7904c5f..7904c5f 100644 --- a/src/main/java/cuchaz/enigma/analysis/ClassInheritanceTreeNode.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/ClassInheritanceTreeNode.java | |||
diff --git a/src/main/java/cuchaz/enigma/analysis/ClassReferenceTreeNode.java b/enigma/src/main/java/cuchaz/enigma/analysis/ClassReferenceTreeNode.java index 90d8a6c..90d8a6c 100644 --- a/src/main/java/cuchaz/enigma/analysis/ClassReferenceTreeNode.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/ClassReferenceTreeNode.java | |||
diff --git a/src/main/java/cuchaz/enigma/analysis/EntryReference.java b/enigma/src/main/java/cuchaz/enigma/analysis/EntryReference.java index 2e738c0..320f945 100644 --- a/src/main/java/cuchaz/enigma/analysis/EntryReference.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/EntryReference.java | |||
| @@ -19,10 +19,10 @@ import cuchaz.enigma.translation.mapping.EntryMap; | |||
| 19 | import cuchaz.enigma.translation.representation.entry.ClassEntry; | 19 | import cuchaz.enigma.translation.representation.entry.ClassEntry; |
| 20 | import cuchaz.enigma.translation.representation.entry.Entry; | 20 | import cuchaz.enigma.translation.representation.entry.Entry; |
| 21 | import cuchaz.enigma.translation.representation.entry.MethodEntry; | 21 | import cuchaz.enigma.translation.representation.entry.MethodEntry; |
| 22 | import cuchaz.enigma.utils.Utils; | ||
| 23 | 22 | ||
| 24 | import java.util.Arrays; | 23 | import java.util.Arrays; |
| 25 | import java.util.List; | 24 | import java.util.List; |
| 25 | import java.util.Objects; | ||
| 26 | 26 | ||
| 27 | public class EntryReference<E extends Entry<?>, C extends Entry<?>> implements Translatable { | 27 | public class EntryReference<E extends Entry<?>, C extends Entry<?>> implements Translatable { |
| 28 | 28 | ||
| @@ -89,7 +89,7 @@ public class EntryReference<E extends Entry<?>, C extends Entry<?>> implements T | |||
| 89 | @Override | 89 | @Override |
| 90 | public int hashCode() { | 90 | public int hashCode() { |
| 91 | if (context != null) { | 91 | if (context != null) { |
| 92 | return Utils.combineHashesOrdered(entry.hashCode(), context.hashCode()); | 92 | return Objects.hash(entry.hashCode(), context.hashCode()); |
| 93 | } | 93 | } |
| 94 | return entry.hashCode(); | 94 | return entry.hashCode(); |
| 95 | } | 95 | } |
diff --git a/src/main/java/cuchaz/enigma/analysis/FieldReferenceTreeNode.java b/enigma/src/main/java/cuchaz/enigma/analysis/FieldReferenceTreeNode.java index 4beab7f..4beab7f 100644 --- a/src/main/java/cuchaz/enigma/analysis/FieldReferenceTreeNode.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/FieldReferenceTreeNode.java | |||
diff --git a/src/main/java/cuchaz/enigma/analysis/IndexSimpleVerifier.java b/enigma/src/main/java/cuchaz/enigma/analysis/IndexSimpleVerifier.java index 80a7154..ec8f323 100644 --- a/src/main/java/cuchaz/enigma/analysis/IndexSimpleVerifier.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/IndexSimpleVerifier.java | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | package cuchaz.enigma.analysis; | 1 | package cuchaz.enigma.analysis; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.Enigma; | ||
| 3 | import cuchaz.enigma.analysis.index.EntryIndex; | 4 | import cuchaz.enigma.analysis.index.EntryIndex; |
| 4 | import cuchaz.enigma.analysis.index.InheritanceIndex; | 5 | import cuchaz.enigma.analysis.index.InheritanceIndex; |
| 5 | import cuchaz.enigma.translation.representation.AccessFlags; | 6 | import cuchaz.enigma.translation.representation.AccessFlags; |
| 6 | import cuchaz.enigma.translation.representation.entry.ClassDefEntry; | 7 | import cuchaz.enigma.translation.representation.entry.ClassDefEntry; |
| 7 | import cuchaz.enigma.translation.representation.entry.ClassEntry; | 8 | import cuchaz.enigma.translation.representation.entry.ClassEntry; |
| 8 | import cuchaz.enigma.utils.Utils; | ||
| 9 | import org.objectweb.asm.Type; | 9 | import org.objectweb.asm.Type; |
| 10 | import org.objectweb.asm.tree.analysis.BasicValue; | 10 | import org.objectweb.asm.tree.analysis.BasicValue; |
| 11 | import org.objectweb.asm.tree.analysis.SimpleVerifier; | 11 | import org.objectweb.asm.tree.analysis.SimpleVerifier; |
| @@ -18,7 +18,7 @@ public class IndexSimpleVerifier extends SimpleVerifier { | |||
| 18 | private final InheritanceIndex inheritanceIndex; | 18 | private final InheritanceIndex inheritanceIndex; |
| 19 | 19 | ||
| 20 | public IndexSimpleVerifier(EntryIndex entryIndex, InheritanceIndex inheritanceIndex) { | 20 | public IndexSimpleVerifier(EntryIndex entryIndex, InheritanceIndex inheritanceIndex) { |
| 21 | super(Utils.ASM_VERSION, null, null, null, false); | 21 | super(Enigma.ASM_VERSION, null, null, null, false); |
| 22 | this.entryIndex = entryIndex; | 22 | this.entryIndex = entryIndex; |
| 23 | this.inheritanceIndex = inheritanceIndex; | 23 | this.inheritanceIndex = inheritanceIndex; |
| 24 | } | 24 | } |
diff --git a/src/main/java/cuchaz/enigma/analysis/IndexTreeBuilder.java b/enigma/src/main/java/cuchaz/enigma/analysis/IndexTreeBuilder.java index 0c2dfd7..0c2dfd7 100644 --- a/src/main/java/cuchaz/enigma/analysis/IndexTreeBuilder.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/IndexTreeBuilder.java | |||
diff --git a/src/main/java/cuchaz/enigma/analysis/InterpreterPair.java b/enigma/src/main/java/cuchaz/enigma/analysis/InterpreterPair.java index 8a1c238..fad10bf 100644 --- a/src/main/java/cuchaz/enigma/analysis/InterpreterPair.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/InterpreterPair.java | |||
| @@ -1,7 +1,6 @@ | |||
| 1 | package cuchaz.enigma.analysis; | 1 | package cuchaz.enigma.analysis; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.utils.Utils; | 3 | import cuchaz.enigma.Enigma; |
| 4 | import org.objectweb.asm.Opcodes; | ||
| 5 | import org.objectweb.asm.Type; | 4 | import org.objectweb.asm.Type; |
| 6 | import org.objectweb.asm.tree.AbstractInsnNode; | 5 | import org.objectweb.asm.tree.AbstractInsnNode; |
| 7 | import org.objectweb.asm.tree.analysis.AnalyzerException; | 6 | import org.objectweb.asm.tree.analysis.AnalyzerException; |
| @@ -17,7 +16,7 @@ public class InterpreterPair<V extends Value, W extends Value> extends Interpret | |||
| 17 | private final Interpreter<W> right; | 16 | private final Interpreter<W> right; |
| 18 | 17 | ||
| 19 | public InterpreterPair(Interpreter<V> left, Interpreter<W> right) { | 18 | public InterpreterPair(Interpreter<V> left, Interpreter<W> right) { |
| 20 | super(Utils.ASM_VERSION); | 19 | super(Enigma.ASM_VERSION); |
| 21 | this.left = left; | 20 | this.left = left; |
| 22 | this.right = right; | 21 | this.right = right; |
| 23 | } | 22 | } |
diff --git a/src/main/java/cuchaz/enigma/analysis/MethodImplementationsTreeNode.java b/enigma/src/main/java/cuchaz/enigma/analysis/MethodImplementationsTreeNode.java index b09f7ac..b09f7ac 100644 --- a/src/main/java/cuchaz/enigma/analysis/MethodImplementationsTreeNode.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/MethodImplementationsTreeNode.java | |||
diff --git a/src/main/java/cuchaz/enigma/analysis/MethodInheritanceTreeNode.java b/enigma/src/main/java/cuchaz/enigma/analysis/MethodInheritanceTreeNode.java index e77b5cc..e77b5cc 100644 --- a/src/main/java/cuchaz/enigma/analysis/MethodInheritanceTreeNode.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/MethodInheritanceTreeNode.java | |||
diff --git a/src/main/java/cuchaz/enigma/analysis/MethodNodeWithAction.java b/enigma/src/main/java/cuchaz/enigma/analysis/MethodNodeWithAction.java index 8117103..8117103 100644 --- a/src/main/java/cuchaz/enigma/analysis/MethodNodeWithAction.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/MethodNodeWithAction.java | |||
diff --git a/src/main/java/cuchaz/enigma/analysis/MethodReferenceTreeNode.java b/enigma/src/main/java/cuchaz/enigma/analysis/MethodReferenceTreeNode.java index 8995eb5..8995eb5 100644 --- a/src/main/java/cuchaz/enigma/analysis/MethodReferenceTreeNode.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/MethodReferenceTreeNode.java | |||
diff --git a/src/main/java/cuchaz/enigma/analysis/ReferenceTargetType.java b/enigma/src/main/java/cuchaz/enigma/analysis/ReferenceTargetType.java index 5b19d18..5b19d18 100644 --- a/src/main/java/cuchaz/enigma/analysis/ReferenceTargetType.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/ReferenceTargetType.java | |||
diff --git a/src/main/java/cuchaz/enigma/analysis/ReferenceTreeNode.java b/enigma/src/main/java/cuchaz/enigma/analysis/ReferenceTreeNode.java index c0a3a75..c0a3a75 100644 --- a/src/main/java/cuchaz/enigma/analysis/ReferenceTreeNode.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/ReferenceTreeNode.java | |||
diff --git a/src/main/java/cuchaz/enigma/analysis/index/BridgeMethodIndex.java b/enigma/src/main/java/cuchaz/enigma/analysis/index/BridgeMethodIndex.java index a4b1aac..a4b1aac 100644 --- a/src/main/java/cuchaz/enigma/analysis/index/BridgeMethodIndex.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/index/BridgeMethodIndex.java | |||
diff --git a/src/main/java/cuchaz/enigma/analysis/index/EntryIndex.java b/enigma/src/main/java/cuchaz/enigma/analysis/index/EntryIndex.java index 9a2726e..9a2726e 100644 --- a/src/main/java/cuchaz/enigma/analysis/index/EntryIndex.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/index/EntryIndex.java | |||
diff --git a/src/main/java/cuchaz/enigma/analysis/index/IndexClassVisitor.java b/enigma/src/main/java/cuchaz/enigma/analysis/index/IndexClassVisitor.java index f9cb23c..f9cb23c 100644 --- a/src/main/java/cuchaz/enigma/analysis/index/IndexClassVisitor.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/index/IndexClassVisitor.java | |||
diff --git a/src/main/java/cuchaz/enigma/analysis/index/IndexReferenceVisitor.java b/enigma/src/main/java/cuchaz/enigma/analysis/index/IndexReferenceVisitor.java index f3d419e..f3d419e 100644 --- a/src/main/java/cuchaz/enigma/analysis/index/IndexReferenceVisitor.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/index/IndexReferenceVisitor.java | |||
diff --git a/src/main/java/cuchaz/enigma/analysis/index/InheritanceIndex.java b/enigma/src/main/java/cuchaz/enigma/analysis/index/InheritanceIndex.java index 1ab2abd..1ab2abd 100644 --- a/src/main/java/cuchaz/enigma/analysis/index/InheritanceIndex.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/index/InheritanceIndex.java | |||
diff --git a/src/main/java/cuchaz/enigma/analysis/index/JarIndex.java b/enigma/src/main/java/cuchaz/enigma/analysis/index/JarIndex.java index e401c2f..de3f5f5 100644 --- a/src/main/java/cuchaz/enigma/analysis/index/JarIndex.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/index/JarIndex.java | |||
| @@ -13,6 +13,7 @@ package cuchaz.enigma.analysis.index; | |||
| 13 | 13 | ||
| 14 | import com.google.common.collect.HashMultimap; | 14 | import com.google.common.collect.HashMultimap; |
| 15 | import com.google.common.collect.Multimap; | 15 | import com.google.common.collect.Multimap; |
| 16 | import cuchaz.enigma.Enigma; | ||
| 16 | import cuchaz.enigma.ProgressListener; | 17 | import cuchaz.enigma.ProgressListener; |
| 17 | import cuchaz.enigma.analysis.ClassCache; | 18 | import cuchaz.enigma.analysis.ClassCache; |
| 18 | import cuchaz.enigma.analysis.ReferenceTargetType; | 19 | import cuchaz.enigma.analysis.ReferenceTargetType; |
| @@ -22,9 +23,7 @@ import cuchaz.enigma.translation.representation.Lambda; | |||
| 22 | import cuchaz.enigma.translation.representation.entry.*; | 23 | import cuchaz.enigma.translation.representation.entry.*; |
| 23 | import cuchaz.enigma.utils.I18n; | 24 | import cuchaz.enigma.utils.I18n; |
| 24 | 25 | ||
| 25 | import cuchaz.enigma.utils.Utils; | ||
| 26 | import org.objectweb.asm.ClassReader; | 26 | import org.objectweb.asm.ClassReader; |
| 27 | import org.objectweb.asm.Opcodes; | ||
| 28 | 27 | ||
| 29 | import java.util.Arrays; | 28 | import java.util.Arrays; |
| 30 | import java.util.Collection; | 29 | import java.util.Collection; |
| @@ -64,10 +63,10 @@ public class JarIndex implements JarIndexer { | |||
| 64 | progress.init(4, I18n.translate("progress.jar.indexing")); | 63 | progress.init(4, I18n.translate("progress.jar.indexing")); |
| 65 | 64 | ||
| 66 | progress.step(1, I18n.translate("progress.jar.indexing.entries")); | 65 | progress.step(1, I18n.translate("progress.jar.indexing.entries")); |
| 67 | classCache.visit(() -> new IndexClassVisitor(this, Utils.ASM_VERSION), ClassReader.SKIP_CODE); | 66 | classCache.visit(() -> new IndexClassVisitor(this, Enigma.ASM_VERSION), ClassReader.SKIP_CODE); |
| 68 | 67 | ||
| 69 | progress.step(2, I18n.translate("progress.jar.indexing.references")); | 68 | progress.step(2, I18n.translate("progress.jar.indexing.references")); |
| 70 | classCache.visit(() -> new IndexReferenceVisitor(this, entryIndex, inheritanceIndex, Utils.ASM_VERSION), 0); | 69 | classCache.visit(() -> new IndexReferenceVisitor(this, entryIndex, inheritanceIndex, Enigma.ASM_VERSION), 0); |
| 71 | 70 | ||
| 72 | progress.step(3, I18n.translate("progress.jar.indexing.methods")); | 71 | progress.step(3, I18n.translate("progress.jar.indexing.methods")); |
| 73 | bridgeMethodIndex.findBridgeMethods(); | 72 | bridgeMethodIndex.findBridgeMethods(); |
diff --git a/src/main/java/cuchaz/enigma/analysis/index/JarIndexer.java b/enigma/src/main/java/cuchaz/enigma/analysis/index/JarIndexer.java index f17e7c9..f17e7c9 100644 --- a/src/main/java/cuchaz/enigma/analysis/index/JarIndexer.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/index/JarIndexer.java | |||
diff --git a/src/main/java/cuchaz/enigma/analysis/index/PackageVisibilityIndex.java b/enigma/src/main/java/cuchaz/enigma/analysis/index/PackageVisibilityIndex.java index 63eb730..64de5f3 100644 --- a/src/main/java/cuchaz/enigma/analysis/index/PackageVisibilityIndex.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/index/PackageVisibilityIndex.java | |||
| @@ -1,147 +1,147 @@ | |||
| 1 | package cuchaz.enigma.analysis.index; | 1 | package cuchaz.enigma.analysis.index; |
| 2 | 2 | ||
| 3 | import com.google.common.collect.HashMultimap; | 3 | import com.google.common.collect.HashMultimap; |
| 4 | import com.google.common.collect.Lists; | 4 | import com.google.common.collect.Lists; |
| 5 | import com.google.common.collect.Maps; | 5 | import com.google.common.collect.Maps; |
| 6 | import com.google.common.collect.Sets; | 6 | import com.google.common.collect.Sets; |
| 7 | import cuchaz.enigma.analysis.EntryReference; | 7 | import cuchaz.enigma.analysis.EntryReference; |
| 8 | import cuchaz.enigma.analysis.ReferenceTargetType; | 8 | import cuchaz.enigma.analysis.ReferenceTargetType; |
| 9 | import cuchaz.enigma.translation.representation.AccessFlags; | 9 | import cuchaz.enigma.translation.representation.AccessFlags; |
| 10 | import cuchaz.enigma.translation.representation.entry.*; | 10 | import cuchaz.enigma.translation.representation.entry.*; |
| 11 | 11 | ||
| 12 | import java.util.*; | 12 | import java.util.*; |
| 13 | 13 | ||
| 14 | public class PackageVisibilityIndex implements JarIndexer { | 14 | public class PackageVisibilityIndex implements JarIndexer { |
| 15 | private static boolean requiresSamePackage(AccessFlags entryAcc, EntryReference ref, InheritanceIndex inheritanceIndex) { | 15 | private static boolean requiresSamePackage(AccessFlags entryAcc, EntryReference ref, InheritanceIndex inheritanceIndex) { |
| 16 | if (entryAcc.isPublic()) { | 16 | if (entryAcc.isPublic()) { |
| 17 | return false; | 17 | return false; |
| 18 | } | 18 | } |
| 19 | 19 | ||
| 20 | if (entryAcc.isProtected()) { | 20 | if (entryAcc.isProtected()) { |
| 21 | ClassEntry contextClass = ref.context.getContainingClass(); | 21 | ClassEntry contextClass = ref.context.getContainingClass(); |
| 22 | ClassEntry referencedClass = ref.entry.getContainingClass(); | 22 | ClassEntry referencedClass = ref.entry.getContainingClass(); |
| 23 | 23 | ||
| 24 | if (!inheritanceIndex.getAncestors(contextClass).contains(referencedClass)) { | 24 | if (!inheritanceIndex.getAncestors(contextClass).contains(referencedClass)) { |
| 25 | return true; // access to protected member not in superclass | 25 | return true; // access to protected member not in superclass |
| 26 | } | 26 | } |
| 27 | 27 | ||
| 28 | if (ref.targetType.getKind() == ReferenceTargetType.Kind.NONE) { | 28 | if (ref.targetType.getKind() == ReferenceTargetType.Kind.NONE) { |
| 29 | return false; // access to superclass or static superclass member | 29 | return false; // access to superclass or static superclass member |
| 30 | } | 30 | } |
| 31 | 31 | ||
| 32 | // access to instance member only valid if target's class assignable to context class | 32 | // access to instance member only valid if target's class assignable to context class |
| 33 | return !(ref.targetType.getKind() == ReferenceTargetType.Kind.UNINITIALIZED || | 33 | return !(ref.targetType.getKind() == ReferenceTargetType.Kind.UNINITIALIZED || |
| 34 | ((ReferenceTargetType.ClassType) ref.targetType).getEntry().equals(contextClass) || | 34 | ((ReferenceTargetType.ClassType) ref.targetType).getEntry().equals(contextClass) || |
| 35 | inheritanceIndex.getAncestors(((ReferenceTargetType.ClassType) ref.targetType).getEntry()).contains(contextClass)); | 35 | inheritanceIndex.getAncestors(((ReferenceTargetType.ClassType) ref.targetType).getEntry()).contains(contextClass)); |
| 36 | } | 36 | } |
| 37 | 37 | ||
| 38 | return true; | 38 | return true; |
| 39 | } | 39 | } |
| 40 | 40 | ||
| 41 | private final HashMultimap<ClassEntry, ClassEntry> connections = HashMultimap.create(); | 41 | private final HashMultimap<ClassEntry, ClassEntry> connections = HashMultimap.create(); |
| 42 | private final List<Set<ClassEntry>> partitions = Lists.newArrayList(); | 42 | private final List<Set<ClassEntry>> partitions = Lists.newArrayList(); |
| 43 | private final Map<ClassEntry, Set<ClassEntry>> classPartitions = Maps.newHashMap(); | 43 | private final Map<ClassEntry, Set<ClassEntry>> classPartitions = Maps.newHashMap(); |
| 44 | 44 | ||
| 45 | private void addConnection(ClassEntry classA, ClassEntry classB) { | 45 | private void addConnection(ClassEntry classA, ClassEntry classB) { |
| 46 | if (classA != classB) { | 46 | if (classA != classB) { |
| 47 | connections.put(classA, classB); | 47 | connections.put(classA, classB); |
| 48 | connections.put(classB, classA); | 48 | connections.put(classB, classA); |
| 49 | } | 49 | } |
| 50 | } | 50 | } |
| 51 | 51 | ||
| 52 | private void buildPartition(Set<ClassEntry> unassignedClasses, Set<ClassEntry> partition, ClassEntry member) { | 52 | private void buildPartition(Set<ClassEntry> unassignedClasses, Set<ClassEntry> partition, ClassEntry member) { |
| 53 | for (ClassEntry connected : connections.get(member)) { | 53 | for (ClassEntry connected : connections.get(member)) { |
| 54 | if (unassignedClasses.remove(connected)) { | 54 | if (unassignedClasses.remove(connected)) { |
| 55 | partition.add(connected); | 55 | partition.add(connected); |
| 56 | buildPartition(unassignedClasses, partition, connected); | 56 | buildPartition(unassignedClasses, partition, connected); |
| 57 | } | 57 | } |
| 58 | } | 58 | } |
| 59 | } | 59 | } |
| 60 | 60 | ||
| 61 | private void addConnections(EntryIndex entryIndex, ReferenceIndex referenceIndex, InheritanceIndex inheritanceIndex) { | 61 | private void addConnections(EntryIndex entryIndex, ReferenceIndex referenceIndex, InheritanceIndex inheritanceIndex) { |
| 62 | for (FieldEntry entry : entryIndex.getFields()) { | 62 | for (FieldEntry entry : entryIndex.getFields()) { |
| 63 | AccessFlags entryAcc = entryIndex.getFieldAccess(entry); | 63 | AccessFlags entryAcc = entryIndex.getFieldAccess(entry); |
| 64 | if (!entryAcc.isPublic() && !entryAcc.isPrivate()) { | 64 | if (!entryAcc.isPublic() && !entryAcc.isPrivate()) { |
| 65 | for (EntryReference<FieldEntry, MethodDefEntry> ref : referenceIndex.getReferencesToField(entry)) { | 65 | for (EntryReference<FieldEntry, MethodDefEntry> ref : referenceIndex.getReferencesToField(entry)) { |
| 66 | if (requiresSamePackage(entryAcc, ref, inheritanceIndex)) { | 66 | if (requiresSamePackage(entryAcc, ref, inheritanceIndex)) { |
| 67 | addConnection(ref.entry.getContainingClass(), ref.context.getContainingClass()); | 67 | addConnection(ref.entry.getContainingClass(), ref.context.getContainingClass()); |
| 68 | } | 68 | } |
| 69 | } | 69 | } |
| 70 | } | 70 | } |
| 71 | } | 71 | } |
| 72 | 72 | ||
| 73 | for (MethodEntry entry : entryIndex.getMethods()) { | 73 | for (MethodEntry entry : entryIndex.getMethods()) { |
| 74 | AccessFlags entryAcc = entryIndex.getMethodAccess(entry); | 74 | AccessFlags entryAcc = entryIndex.getMethodAccess(entry); |
| 75 | if (!entryAcc.isPublic() && !entryAcc.isPrivate()) { | 75 | if (!entryAcc.isPublic() && !entryAcc.isPrivate()) { |
| 76 | for (EntryReference<MethodEntry, MethodDefEntry> ref : referenceIndex.getReferencesToMethod(entry)) { | 76 | for (EntryReference<MethodEntry, MethodDefEntry> ref : referenceIndex.getReferencesToMethod(entry)) { |
| 77 | if (requiresSamePackage(entryAcc, ref, inheritanceIndex)) { | 77 | if (requiresSamePackage(entryAcc, ref, inheritanceIndex)) { |
| 78 | addConnection(ref.entry.getContainingClass(), ref.context.getContainingClass()); | 78 | addConnection(ref.entry.getContainingClass(), ref.context.getContainingClass()); |
| 79 | } | 79 | } |
| 80 | } | 80 | } |
| 81 | } | 81 | } |
| 82 | } | 82 | } |
| 83 | 83 | ||
| 84 | for (ClassEntry entry : entryIndex.getClasses()) { | 84 | for (ClassEntry entry : entryIndex.getClasses()) { |
| 85 | AccessFlags entryAcc = entryIndex.getClassAccess(entry); | 85 | AccessFlags entryAcc = entryIndex.getClassAccess(entry); |
| 86 | if (!entryAcc.isPublic() && !entryAcc.isPrivate()) { | 86 | if (!entryAcc.isPublic() && !entryAcc.isPrivate()) { |
| 87 | for (EntryReference<ClassEntry, FieldDefEntry> ref : referenceIndex.getFieldTypeReferencesToClass(entry)) { | 87 | for (EntryReference<ClassEntry, FieldDefEntry> ref : referenceIndex.getFieldTypeReferencesToClass(entry)) { |
| 88 | if (requiresSamePackage(entryAcc, ref, inheritanceIndex)) { | 88 | if (requiresSamePackage(entryAcc, ref, inheritanceIndex)) { |
| 89 | addConnection(ref.entry.getContainingClass(), ref.context.getContainingClass()); | 89 | addConnection(ref.entry.getContainingClass(), ref.context.getContainingClass()); |
| 90 | } | 90 | } |
| 91 | } | 91 | } |
| 92 | 92 | ||
| 93 | for (EntryReference<ClassEntry, MethodDefEntry> ref : referenceIndex.getMethodTypeReferencesToClass(entry)) { | 93 | for (EntryReference<ClassEntry, MethodDefEntry> ref : referenceIndex.getMethodTypeReferencesToClass(entry)) { |
| 94 | if (requiresSamePackage(entryAcc, ref, inheritanceIndex)) { | 94 | if (requiresSamePackage(entryAcc, ref, inheritanceIndex)) { |
| 95 | addConnection(ref.entry.getContainingClass(), ref.context.getContainingClass()); | 95 | addConnection(ref.entry.getContainingClass(), ref.context.getContainingClass()); |
| 96 | } | 96 | } |
| 97 | } | 97 | } |
| 98 | } | 98 | } |
| 99 | 99 | ||
| 100 | for (ClassEntry parent : inheritanceIndex.getParents(entry)) { | 100 | for (ClassEntry parent : inheritanceIndex.getParents(entry)) { |
| 101 | AccessFlags parentAcc = entryIndex.getClassAccess(parent); | 101 | AccessFlags parentAcc = entryIndex.getClassAccess(parent); |
| 102 | if (parentAcc != null && !parentAcc.isPublic() && !parentAcc.isPrivate()) { | 102 | if (parentAcc != null && !parentAcc.isPublic() && !parentAcc.isPrivate()) { |
| 103 | addConnection(entry, parent); | 103 | addConnection(entry, parent); |
| 104 | } | 104 | } |
| 105 | } | 105 | } |
| 106 | 106 | ||
| 107 | ClassEntry outerClass = entry.getOuterClass(); | 107 | ClassEntry outerClass = entry.getOuterClass(); |
| 108 | if (outerClass != null) { | 108 | if (outerClass != null) { |
| 109 | addConnection(entry, outerClass); | 109 | addConnection(entry, outerClass); |
| 110 | } | 110 | } |
| 111 | } | 111 | } |
| 112 | } | 112 | } |
| 113 | 113 | ||
| 114 | private void addPartitions(EntryIndex entryIndex) { | 114 | private void addPartitions(EntryIndex entryIndex) { |
| 115 | Set<ClassEntry> unassignedClasses = Sets.newHashSet(entryIndex.getClasses()); | 115 | Set<ClassEntry> unassignedClasses = Sets.newHashSet(entryIndex.getClasses()); |
| 116 | while (!unassignedClasses.isEmpty()) { | 116 | while (!unassignedClasses.isEmpty()) { |
| 117 | Iterator<ClassEntry> iterator = unassignedClasses.iterator(); | 117 | Iterator<ClassEntry> iterator = unassignedClasses.iterator(); |
| 118 | ClassEntry initialEntry = iterator.next(); | 118 | ClassEntry initialEntry = iterator.next(); |
| 119 | iterator.remove(); | 119 | iterator.remove(); |
| 120 | 120 | ||
| 121 | HashSet<ClassEntry> partition = Sets.newHashSet(); | 121 | HashSet<ClassEntry> partition = Sets.newHashSet(); |
| 122 | partition.add(initialEntry); | 122 | partition.add(initialEntry); |
| 123 | buildPartition(unassignedClasses, partition, initialEntry); | 123 | buildPartition(unassignedClasses, partition, initialEntry); |
| 124 | partitions.add(partition); | 124 | partitions.add(partition); |
| 125 | for (ClassEntry entry : partition) { | 125 | for (ClassEntry entry : partition) { |
| 126 | classPartitions.put(entry, partition); | 126 | classPartitions.put(entry, partition); |
| 127 | } | 127 | } |
| 128 | } | 128 | } |
| 129 | } | 129 | } |
| 130 | 130 | ||
| 131 | public Collection<Set<ClassEntry>> getPartitions() { | 131 | public Collection<Set<ClassEntry>> getPartitions() { |
| 132 | return partitions; | 132 | return partitions; |
| 133 | } | 133 | } |
| 134 | 134 | ||
| 135 | public Set<ClassEntry> getPartition(ClassEntry classEntry) { | 135 | public Set<ClassEntry> getPartition(ClassEntry classEntry) { |
| 136 | return classPartitions.get(classEntry); | 136 | return classPartitions.get(classEntry); |
| 137 | } | 137 | } |
| 138 | 138 | ||
| 139 | @Override | 139 | @Override |
| 140 | public void processIndex(JarIndex index) { | 140 | public void processIndex(JarIndex index) { |
| 141 | EntryIndex entryIndex = index.getEntryIndex(); | 141 | EntryIndex entryIndex = index.getEntryIndex(); |
| 142 | ReferenceIndex referenceIndex = index.getReferenceIndex(); | 142 | ReferenceIndex referenceIndex = index.getReferenceIndex(); |
| 143 | InheritanceIndex inheritanceIndex = index.getInheritanceIndex(); | 143 | InheritanceIndex inheritanceIndex = index.getInheritanceIndex(); |
| 144 | addConnections(entryIndex, referenceIndex, inheritanceIndex); | 144 | addConnections(entryIndex, referenceIndex, inheritanceIndex); |
| 145 | addPartitions(entryIndex); | 145 | addPartitions(entryIndex); |
| 146 | } | 146 | } |
| 147 | } | 147 | } |
diff --git a/src/main/java/cuchaz/enigma/analysis/index/ReferenceIndex.java b/enigma/src/main/java/cuchaz/enigma/analysis/index/ReferenceIndex.java index b6797c2..b6797c2 100644 --- a/src/main/java/cuchaz/enigma/analysis/index/ReferenceIndex.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/index/ReferenceIndex.java | |||
diff --git a/src/main/java/cuchaz/enigma/api/EnigmaPlugin.java b/enigma/src/main/java/cuchaz/enigma/api/EnigmaPlugin.java index bdd6015..bdd6015 100644 --- a/src/main/java/cuchaz/enigma/api/EnigmaPlugin.java +++ b/enigma/src/main/java/cuchaz/enigma/api/EnigmaPlugin.java | |||
diff --git a/src/main/java/cuchaz/enigma/api/EnigmaPluginContext.java b/enigma/src/main/java/cuchaz/enigma/api/EnigmaPluginContext.java index a59051a..a59051a 100644 --- a/src/main/java/cuchaz/enigma/api/EnigmaPluginContext.java +++ b/enigma/src/main/java/cuchaz/enigma/api/EnigmaPluginContext.java | |||
diff --git a/src/main/java/cuchaz/enigma/api/service/EnigmaService.java b/enigma/src/main/java/cuchaz/enigma/api/service/EnigmaService.java index 526dda7..526dda7 100644 --- a/src/main/java/cuchaz/enigma/api/service/EnigmaService.java +++ b/enigma/src/main/java/cuchaz/enigma/api/service/EnigmaService.java | |||
diff --git a/src/main/java/cuchaz/enigma/api/service/EnigmaServiceContext.java b/enigma/src/main/java/cuchaz/enigma/api/service/EnigmaServiceContext.java index 9e433fb..9e433fb 100644 --- a/src/main/java/cuchaz/enigma/api/service/EnigmaServiceContext.java +++ b/enigma/src/main/java/cuchaz/enigma/api/service/EnigmaServiceContext.java | |||
diff --git a/src/main/java/cuchaz/enigma/api/service/EnigmaServiceFactory.java b/enigma/src/main/java/cuchaz/enigma/api/service/EnigmaServiceFactory.java index 7c10ac2..7c10ac2 100644 --- a/src/main/java/cuchaz/enigma/api/service/EnigmaServiceFactory.java +++ b/enigma/src/main/java/cuchaz/enigma/api/service/EnigmaServiceFactory.java | |||
diff --git a/src/main/java/cuchaz/enigma/api/service/EnigmaServiceType.java b/enigma/src/main/java/cuchaz/enigma/api/service/EnigmaServiceType.java index 358828f..358828f 100644 --- a/src/main/java/cuchaz/enigma/api/service/EnigmaServiceType.java +++ b/enigma/src/main/java/cuchaz/enigma/api/service/EnigmaServiceType.java | |||
diff --git a/src/main/java/cuchaz/enigma/api/service/JarIndexerService.java b/enigma/src/main/java/cuchaz/enigma/api/service/JarIndexerService.java index 0cda199..0cda199 100644 --- a/src/main/java/cuchaz/enigma/api/service/JarIndexerService.java +++ b/enigma/src/main/java/cuchaz/enigma/api/service/JarIndexerService.java | |||
diff --git a/src/main/java/cuchaz/enigma/api/service/NameProposalService.java b/enigma/src/main/java/cuchaz/enigma/api/service/NameProposalService.java index 4c357db..4c357db 100644 --- a/src/main/java/cuchaz/enigma/api/service/NameProposalService.java +++ b/enigma/src/main/java/cuchaz/enigma/api/service/NameProposalService.java | |||
diff --git a/src/main/java/cuchaz/enigma/api/service/ObfuscationTestService.java b/enigma/src/main/java/cuchaz/enigma/api/service/ObfuscationTestService.java index af0cf30..af0cf30 100644 --- a/src/main/java/cuchaz/enigma/api/service/ObfuscationTestService.java +++ b/enigma/src/main/java/cuchaz/enigma/api/service/ObfuscationTestService.java | |||
diff --git a/src/main/java/cuchaz/enigma/bytecode/translators/AsmObjectTranslator.java b/enigma/src/main/java/cuchaz/enigma/bytecode/translators/AsmObjectTranslator.java index 1a2b47f..1a2b47f 100644 --- a/src/main/java/cuchaz/enigma/bytecode/translators/AsmObjectTranslator.java +++ b/enigma/src/main/java/cuchaz/enigma/bytecode/translators/AsmObjectTranslator.java | |||
diff --git a/src/main/java/cuchaz/enigma/bytecode/translators/LocalVariableFixVisitor.java b/enigma/src/main/java/cuchaz/enigma/bytecode/translators/LocalVariableFixVisitor.java index cfd8fbe..cfd8fbe 100644 --- a/src/main/java/cuchaz/enigma/bytecode/translators/LocalVariableFixVisitor.java +++ b/enigma/src/main/java/cuchaz/enigma/bytecode/translators/LocalVariableFixVisitor.java | |||
diff --git a/src/main/java/cuchaz/enigma/bytecode/translators/SourceFixVisitor.java b/enigma/src/main/java/cuchaz/enigma/bytecode/translators/SourceFixVisitor.java index 2b750ea..2b750ea 100644 --- a/src/main/java/cuchaz/enigma/bytecode/translators/SourceFixVisitor.java +++ b/enigma/src/main/java/cuchaz/enigma/bytecode/translators/SourceFixVisitor.java | |||
diff --git a/src/main/java/cuchaz/enigma/bytecode/translators/TranslationAnnotationVisitor.java b/enigma/src/main/java/cuchaz/enigma/bytecode/translators/TranslationAnnotationVisitor.java index cb843ad..cb843ad 100644 --- a/src/main/java/cuchaz/enigma/bytecode/translators/TranslationAnnotationVisitor.java +++ b/enigma/src/main/java/cuchaz/enigma/bytecode/translators/TranslationAnnotationVisitor.java | |||
diff --git a/src/main/java/cuchaz/enigma/bytecode/translators/TranslationClassVisitor.java b/enigma/src/main/java/cuchaz/enigma/bytecode/translators/TranslationClassVisitor.java index e4c41d3..e4c41d3 100644 --- a/src/main/java/cuchaz/enigma/bytecode/translators/TranslationClassVisitor.java +++ b/enigma/src/main/java/cuchaz/enigma/bytecode/translators/TranslationClassVisitor.java | |||
diff --git a/src/main/java/cuchaz/enigma/bytecode/translators/TranslationFieldVisitor.java b/enigma/src/main/java/cuchaz/enigma/bytecode/translators/TranslationFieldVisitor.java index 28fc199..28fc199 100644 --- a/src/main/java/cuchaz/enigma/bytecode/translators/TranslationFieldVisitor.java +++ b/enigma/src/main/java/cuchaz/enigma/bytecode/translators/TranslationFieldVisitor.java | |||
diff --git a/src/main/java/cuchaz/enigma/bytecode/translators/TranslationMethodVisitor.java b/enigma/src/main/java/cuchaz/enigma/bytecode/translators/TranslationMethodVisitor.java index a82df1b..a82df1b 100644 --- a/src/main/java/cuchaz/enigma/bytecode/translators/TranslationMethodVisitor.java +++ b/enigma/src/main/java/cuchaz/enigma/bytecode/translators/TranslationMethodVisitor.java | |||
diff --git a/src/main/java/cuchaz/enigma/bytecode/translators/TranslationSignatureVisitor.java b/enigma/src/main/java/cuchaz/enigma/bytecode/translators/TranslationSignatureVisitor.java index eebd650..bc4a2f0 100644 --- a/src/main/java/cuchaz/enigma/bytecode/translators/TranslationSignatureVisitor.java +++ b/enigma/src/main/java/cuchaz/enigma/bytecode/translators/TranslationSignatureVisitor.java | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | package cuchaz.enigma.bytecode.translators; | 1 | package cuchaz.enigma.bytecode.translators; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.utils.Utils; | 3 | import cuchaz.enigma.Enigma; |
| 4 | import org.objectweb.asm.signature.SignatureVisitor; | 4 | import org.objectweb.asm.signature.SignatureVisitor; |
| 5 | 5 | ||
| 6 | import java.util.Stack; | 6 | import java.util.Stack; |
| @@ -13,7 +13,7 @@ public class TranslationSignatureVisitor extends SignatureVisitor { | |||
| 13 | private final Stack<String> classStack = new Stack<>(); | 13 | private final Stack<String> classStack = new Stack<>(); |
| 14 | 14 | ||
| 15 | public TranslationSignatureVisitor(Function<String, String> remapper, SignatureVisitor sv) { | 15 | public TranslationSignatureVisitor(Function<String, String> remapper, SignatureVisitor sv) { |
| 16 | super(Utils.ASM_VERSION); | 16 | super(Enigma.ASM_VERSION); |
| 17 | this.remapper = remapper; | 17 | this.remapper = remapper; |
| 18 | this.sv = sv; | 18 | this.sv = sv; |
| 19 | } | 19 | } |
diff --git a/src/main/java/cuchaz/enigma/source/Decompiler.java b/enigma/src/main/java/cuchaz/enigma/source/Decompiler.java index c9666d5..c9666d5 100644 --- a/src/main/java/cuchaz/enigma/source/Decompiler.java +++ b/enigma/src/main/java/cuchaz/enigma/source/Decompiler.java | |||
diff --git a/src/main/java/cuchaz/enigma/source/DecompilerService.java b/enigma/src/main/java/cuchaz/enigma/source/DecompilerService.java index 377ccbc..377ccbc 100644 --- a/src/main/java/cuchaz/enigma/source/DecompilerService.java +++ b/enigma/src/main/java/cuchaz/enigma/source/DecompilerService.java | |||
diff --git a/src/main/java/cuchaz/enigma/source/Decompilers.java b/enigma/src/main/java/cuchaz/enigma/source/Decompilers.java index 7d154a6..7d154a6 100644 --- a/src/main/java/cuchaz/enigma/source/Decompilers.java +++ b/enigma/src/main/java/cuchaz/enigma/source/Decompilers.java | |||
diff --git a/src/main/java/cuchaz/enigma/source/Source.java b/enigma/src/main/java/cuchaz/enigma/source/Source.java index 43c4de0..43c4de0 100644 --- a/src/main/java/cuchaz/enigma/source/Source.java +++ b/enigma/src/main/java/cuchaz/enigma/source/Source.java | |||
diff --git a/src/main/java/cuchaz/enigma/source/SourceIndex.java b/enigma/src/main/java/cuchaz/enigma/source/SourceIndex.java index 6a335ec..178ce20 100644 --- a/src/main/java/cuchaz/enigma/source/SourceIndex.java +++ b/enigma/src/main/java/cuchaz/enigma/source/SourceIndex.java | |||
| @@ -5,8 +5,6 @@ import com.google.common.collect.Lists; | |||
| 5 | import com.google.common.collect.Maps; | 5 | import com.google.common.collect.Maps; |
| 6 | import com.google.common.collect.Multimap; | 6 | import com.google.common.collect.Multimap; |
| 7 | import cuchaz.enigma.analysis.EntryReference; | 7 | import cuchaz.enigma.analysis.EntryReference; |
| 8 | import cuchaz.enigma.analysis.Token; | ||
| 9 | import cuchaz.enigma.gui.SourceRemapper; | ||
| 10 | import cuchaz.enigma.translation.mapping.EntryResolver; | 8 | import cuchaz.enigma.translation.mapping.EntryResolver; |
| 11 | import cuchaz.enigma.translation.mapping.ResolutionStrategy; | 9 | import cuchaz.enigma.translation.mapping.ResolutionStrategy; |
| 12 | import cuchaz.enigma.translation.representation.entry.Entry; | 10 | import cuchaz.enigma.translation.representation.entry.Entry; |
diff --git a/src/main/java/cuchaz/enigma/gui/SourceRemapper.java b/enigma/src/main/java/cuchaz/enigma/source/SourceRemapper.java index f38f44e..b5f8006 100644 --- a/src/main/java/cuchaz/enigma/gui/SourceRemapper.java +++ b/enigma/src/main/java/cuchaz/enigma/source/SourceRemapper.java | |||
| @@ -1,6 +1,4 @@ | |||
| 1 | package cuchaz.enigma.gui; | 1 | package cuchaz.enigma.source; |
| 2 | |||
| 3 | import cuchaz.enigma.analysis.Token; | ||
| 4 | 2 | ||
| 5 | import java.util.HashMap; | 3 | import java.util.HashMap; |
| 6 | import java.util.Map; | 4 | import java.util.Map; |
diff --git a/src/main/java/cuchaz/enigma/source/SourceSettings.java b/enigma/src/main/java/cuchaz/enigma/source/SourceSettings.java index f6c68e9..f6c68e9 100644 --- a/src/main/java/cuchaz/enigma/source/SourceSettings.java +++ b/enigma/src/main/java/cuchaz/enigma/source/SourceSettings.java | |||
diff --git a/src/main/java/cuchaz/enigma/analysis/Token.java b/enigma/src/main/java/cuchaz/enigma/source/Token.java index f0155e5..fad733f 100644 --- a/src/main/java/cuchaz/enigma/analysis/Token.java +++ b/enigma/src/main/java/cuchaz/enigma/source/Token.java | |||
| @@ -9,7 +9,7 @@ | |||
| 9 | * Jeff Martin - initial API and implementation | 9 | * Jeff Martin - initial API and implementation |
| 10 | ******************************************************************************/ | 10 | ******************************************************************************/ |
| 11 | 11 | ||
| 12 | package cuchaz.enigma.analysis; | 12 | package cuchaz.enigma.source; |
| 13 | 13 | ||
| 14 | public class Token implements Comparable<Token> { | 14 | public class Token implements Comparable<Token> { |
| 15 | 15 | ||
diff --git a/src/main/java/cuchaz/enigma/source/cfr/CfrDecompiler.java b/enigma/src/main/java/cuchaz/enigma/source/cfr/CfrDecompiler.java index 9e37f16..9e37f16 100644 --- a/src/main/java/cuchaz/enigma/source/cfr/CfrDecompiler.java +++ b/enigma/src/main/java/cuchaz/enigma/source/cfr/CfrDecompiler.java | |||
diff --git a/src/main/java/cuchaz/enigma/source/cfr/CfrSource.java b/enigma/src/main/java/cuchaz/enigma/source/cfr/CfrSource.java index d4f2da6..d4f2da6 100644 --- a/src/main/java/cuchaz/enigma/source/cfr/CfrSource.java +++ b/enigma/src/main/java/cuchaz/enigma/source/cfr/CfrSource.java | |||
diff --git a/src/main/java/cuchaz/enigma/source/cfr/EnigmaDumper.java b/enigma/src/main/java/cuchaz/enigma/source/cfr/EnigmaDumper.java index 09e0a9b..e05a6ff 100644 --- a/src/main/java/cuchaz/enigma/source/cfr/EnigmaDumper.java +++ b/enigma/src/main/java/cuchaz/enigma/source/cfr/EnigmaDumper.java | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | package cuchaz.enigma.source.cfr; | 1 | package cuchaz.enigma.source.cfr; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.analysis.Token; | 3 | import cuchaz.enigma.source.Token; |
| 4 | import cuchaz.enigma.source.SourceIndex; | 4 | import cuchaz.enigma.source.SourceIndex; |
| 5 | import cuchaz.enigma.translation.representation.MethodDescriptor; | 5 | import cuchaz.enigma.translation.representation.MethodDescriptor; |
| 6 | import cuchaz.enigma.translation.representation.TypeDescriptor; | 6 | import cuchaz.enigma.translation.representation.TypeDescriptor; |
diff --git a/src/main/java/cuchaz/enigma/source/procyon/EntryParser.java b/enigma/src/main/java/cuchaz/enigma/source/procyon/EntryParser.java index 2fae61a..2fae61a 100644 --- a/src/main/java/cuchaz/enigma/source/procyon/EntryParser.java +++ b/enigma/src/main/java/cuchaz/enigma/source/procyon/EntryParser.java | |||
diff --git a/src/main/java/cuchaz/enigma/source/procyon/ProcyonDecompiler.java b/enigma/src/main/java/cuchaz/enigma/source/procyon/ProcyonDecompiler.java index 37bc0c8..3cbd680 100644 --- a/src/main/java/cuchaz/enigma/source/procyon/ProcyonDecompiler.java +++ b/enigma/src/main/java/cuchaz/enigma/source/procyon/ProcyonDecompiler.java | |||
| @@ -12,7 +12,6 @@ import com.strobel.decompiler.languages.java.ast.AstBuilder; | |||
| 12 | import com.strobel.decompiler.languages.java.ast.CompilationUnit; | 12 | import com.strobel.decompiler.languages.java.ast.CompilationUnit; |
| 13 | import com.strobel.decompiler.languages.java.ast.InsertParenthesesVisitor; | 13 | import com.strobel.decompiler.languages.java.ast.InsertParenthesesVisitor; |
| 14 | import cuchaz.enigma.ClassProvider; | 14 | import cuchaz.enigma.ClassProvider; |
| 15 | import cuchaz.enigma.api.EnigmaPluginContext; | ||
| 16 | import cuchaz.enigma.source.Source; | 15 | import cuchaz.enigma.source.Source; |
| 17 | import cuchaz.enigma.source.Decompiler; | 16 | import cuchaz.enigma.source.Decompiler; |
| 18 | import cuchaz.enigma.source.SourceSettings; | 17 | import cuchaz.enigma.source.SourceSettings; |
| @@ -20,7 +19,6 @@ import cuchaz.enigma.source.procyon.transformers.*; | |||
| 20 | import cuchaz.enigma.source.procyon.typeloader.CompiledSourceTypeLoader; | 19 | import cuchaz.enigma.source.procyon.typeloader.CompiledSourceTypeLoader; |
| 21 | import cuchaz.enigma.source.procyon.typeloader.NoRetryMetadataSystem; | 20 | import cuchaz.enigma.source.procyon.typeloader.NoRetryMetadataSystem; |
| 22 | import cuchaz.enigma.source.procyon.typeloader.SynchronizedTypeLoader; | 21 | import cuchaz.enigma.source.procyon.typeloader.SynchronizedTypeLoader; |
| 23 | import cuchaz.enigma.utils.Utils; | ||
| 24 | 22 | ||
| 25 | public class ProcyonDecompiler implements Decompiler { | 23 | public class ProcyonDecompiler implements Decompiler { |
| 26 | private final SourceSettings settings; | 24 | private final SourceSettings settings; |
| @@ -34,11 +32,11 @@ public class ProcyonDecompiler implements Decompiler { | |||
| 34 | metadataSystem.setEagerMethodLoadingEnabled(true); | 32 | metadataSystem.setEagerMethodLoadingEnabled(true); |
| 35 | 33 | ||
| 36 | decompilerSettings = DecompilerSettings.javaDefaults(); | 34 | decompilerSettings = DecompilerSettings.javaDefaults(); |
| 37 | decompilerSettings.setMergeVariables(Utils.getSystemPropertyAsBoolean("enigma.mergeVariables", true)); | 35 | decompilerSettings.setMergeVariables(getSystemPropertyAsBoolean("enigma.mergeVariables", true)); |
| 38 | decompilerSettings.setForceExplicitImports(Utils.getSystemPropertyAsBoolean("enigma.forceExplicitImports", true)); | 36 | decompilerSettings.setForceExplicitImports(getSystemPropertyAsBoolean("enigma.forceExplicitImports", true)); |
| 39 | decompilerSettings.setForceExplicitTypeArguments(Utils.getSystemPropertyAsBoolean("enigma.forceExplicitTypeArguments", true)); | 37 | decompilerSettings.setForceExplicitTypeArguments(getSystemPropertyAsBoolean("enigma.forceExplicitTypeArguments", true)); |
| 40 | decompilerSettings.setShowDebugLineNumbers(Utils.getSystemPropertyAsBoolean("enigma.showDebugLineNumbers", false)); | 38 | decompilerSettings.setShowDebugLineNumbers(getSystemPropertyAsBoolean("enigma.showDebugLineNumbers", false)); |
| 41 | decompilerSettings.setShowSyntheticMembers(Utils.getSystemPropertyAsBoolean("enigma.showSyntheticMembers", false)); | 39 | decompilerSettings.setShowSyntheticMembers(getSystemPropertyAsBoolean("enigma.showSyntheticMembers", false)); |
| 42 | decompilerSettings.setTypeLoader(typeLoader); | 40 | decompilerSettings.setTypeLoader(typeLoader); |
| 43 | 41 | ||
| 44 | JavaFormattingOptions formattingOptions = decompilerSettings.getJavaFormattingOptions(); | 42 | JavaFormattingOptions formattingOptions = decompilerSettings.getJavaFormattingOptions(); |
| @@ -78,4 +76,9 @@ public class ProcyonDecompiler implements Decompiler { | |||
| 78 | 76 | ||
| 79 | return new ProcyonSource(source, decompilerSettings); | 77 | return new ProcyonSource(source, decompilerSettings); |
| 80 | } | 78 | } |
| 79 | |||
| 80 | private static boolean getSystemPropertyAsBoolean(String property, boolean defValue) { | ||
| 81 | String value = System.getProperty(property); | ||
| 82 | return value == null ? defValue : Boolean.parseBoolean(value); | ||
| 83 | } | ||
| 81 | } | 84 | } |
diff --git a/src/main/java/cuchaz/enigma/source/procyon/ProcyonSource.java b/enigma/src/main/java/cuchaz/enigma/source/procyon/ProcyonSource.java index 53c8c70..53c8c70 100644 --- a/src/main/java/cuchaz/enigma/source/procyon/ProcyonSource.java +++ b/enigma/src/main/java/cuchaz/enigma/source/procyon/ProcyonSource.java | |||
diff --git a/src/main/java/cuchaz/enigma/source/procyon/index/SourceIndexClassVisitor.java b/enigma/src/main/java/cuchaz/enigma/source/procyon/index/SourceIndexClassVisitor.java index f6eeb15..f6eeb15 100644 --- a/src/main/java/cuchaz/enigma/source/procyon/index/SourceIndexClassVisitor.java +++ b/enigma/src/main/java/cuchaz/enigma/source/procyon/index/SourceIndexClassVisitor.java | |||
diff --git a/src/main/java/cuchaz/enigma/source/procyon/index/SourceIndexMethodVisitor.java b/enigma/src/main/java/cuchaz/enigma/source/procyon/index/SourceIndexMethodVisitor.java index 0e8bc51..0e8bc51 100644 --- a/src/main/java/cuchaz/enigma/source/procyon/index/SourceIndexMethodVisitor.java +++ b/enigma/src/main/java/cuchaz/enigma/source/procyon/index/SourceIndexMethodVisitor.java | |||
diff --git a/src/main/java/cuchaz/enigma/source/procyon/index/SourceIndexVisitor.java b/enigma/src/main/java/cuchaz/enigma/source/procyon/index/SourceIndexVisitor.java index dad505f..dad505f 100644 --- a/src/main/java/cuchaz/enigma/source/procyon/index/SourceIndexVisitor.java +++ b/enigma/src/main/java/cuchaz/enigma/source/procyon/index/SourceIndexVisitor.java | |||
diff --git a/src/main/java/cuchaz/enigma/source/procyon/index/TokenFactory.java b/enigma/src/main/java/cuchaz/enigma/source/procyon/index/TokenFactory.java index 62e7c10..dc36865 100644 --- a/src/main/java/cuchaz/enigma/source/procyon/index/TokenFactory.java +++ b/enigma/src/main/java/cuchaz/enigma/source/procyon/index/TokenFactory.java | |||
| @@ -5,7 +5,7 @@ import com.strobel.decompiler.languages.java.ast.AstNode; | |||
| 5 | import com.strobel.decompiler.languages.java.ast.ConstructorDeclaration; | 5 | import com.strobel.decompiler.languages.java.ast.ConstructorDeclaration; |
| 6 | import com.strobel.decompiler.languages.java.ast.Identifier; | 6 | import com.strobel.decompiler.languages.java.ast.Identifier; |
| 7 | import com.strobel.decompiler.languages.java.ast.TypeDeclaration; | 7 | import com.strobel.decompiler.languages.java.ast.TypeDeclaration; |
| 8 | import cuchaz.enigma.analysis.Token; | 8 | import cuchaz.enigma.source.Token; |
| 9 | import cuchaz.enigma.source.SourceIndex; | 9 | import cuchaz.enigma.source.SourceIndex; |
| 10 | 10 | ||
| 11 | import java.util.regex.Pattern; | 11 | import java.util.regex.Pattern; |
diff --git a/src/main/java/cuchaz/enigma/source/procyon/transformers/AddJavadocsAstTransform.java b/enigma/src/main/java/cuchaz/enigma/source/procyon/transformers/AddJavadocsAstTransform.java index 70fc8c6..70fc8c6 100644 --- a/src/main/java/cuchaz/enigma/source/procyon/transformers/AddJavadocsAstTransform.java +++ b/enigma/src/main/java/cuchaz/enigma/source/procyon/transformers/AddJavadocsAstTransform.java | |||
diff --git a/src/main/java/cuchaz/enigma/source/procyon/transformers/DropImportAstTransform.java b/enigma/src/main/java/cuchaz/enigma/source/procyon/transformers/DropImportAstTransform.java index 39e599d..39e599d 100644 --- a/src/main/java/cuchaz/enigma/source/procyon/transformers/DropImportAstTransform.java +++ b/enigma/src/main/java/cuchaz/enigma/source/procyon/transformers/DropImportAstTransform.java | |||
diff --git a/src/main/java/cuchaz/enigma/source/procyon/transformers/DropVarModifiersAstTransform.java b/enigma/src/main/java/cuchaz/enigma/source/procyon/transformers/DropVarModifiersAstTransform.java index b8c087b..b8c087b 100644 --- a/src/main/java/cuchaz/enigma/source/procyon/transformers/DropVarModifiersAstTransform.java +++ b/enigma/src/main/java/cuchaz/enigma/source/procyon/transformers/DropVarModifiersAstTransform.java | |||
diff --git a/src/main/java/cuchaz/enigma/source/procyon/transformers/InvalidIdentifierFix.java b/enigma/src/main/java/cuchaz/enigma/source/procyon/transformers/InvalidIdentifierFix.java index 34d95fa..34d95fa 100644 --- a/src/main/java/cuchaz/enigma/source/procyon/transformers/InvalidIdentifierFix.java +++ b/enigma/src/main/java/cuchaz/enigma/source/procyon/transformers/InvalidIdentifierFix.java | |||
diff --git a/src/main/java/cuchaz/enigma/source/procyon/transformers/Java8Generics.java b/enigma/src/main/java/cuchaz/enigma/source/procyon/transformers/Java8Generics.java index 8accfc7..8accfc7 100644 --- a/src/main/java/cuchaz/enigma/source/procyon/transformers/Java8Generics.java +++ b/enigma/src/main/java/cuchaz/enigma/source/procyon/transformers/Java8Generics.java | |||
diff --git a/src/main/java/cuchaz/enigma/source/procyon/transformers/ObfuscatedEnumSwitchRewriterTransform.java b/enigma/src/main/java/cuchaz/enigma/source/procyon/transformers/ObfuscatedEnumSwitchRewriterTransform.java index 32bb72f..32bb72f 100644 --- a/src/main/java/cuchaz/enigma/source/procyon/transformers/ObfuscatedEnumSwitchRewriterTransform.java +++ b/enigma/src/main/java/cuchaz/enigma/source/procyon/transformers/ObfuscatedEnumSwitchRewriterTransform.java | |||
diff --git a/src/main/java/cuchaz/enigma/source/procyon/transformers/RemoveObjectCasts.java b/enigma/src/main/java/cuchaz/enigma/source/procyon/transformers/RemoveObjectCasts.java index cf0376f..cf0376f 100644 --- a/src/main/java/cuchaz/enigma/source/procyon/transformers/RemoveObjectCasts.java +++ b/enigma/src/main/java/cuchaz/enigma/source/procyon/transformers/RemoveObjectCasts.java | |||
diff --git a/src/main/java/cuchaz/enigma/source/procyon/transformers/VarargsFixer.java b/enigma/src/main/java/cuchaz/enigma/source/procyon/transformers/VarargsFixer.java index d3ddaab..d3ddaab 100644 --- a/src/main/java/cuchaz/enigma/source/procyon/transformers/VarargsFixer.java +++ b/enigma/src/main/java/cuchaz/enigma/source/procyon/transformers/VarargsFixer.java | |||
diff --git a/src/main/java/cuchaz/enigma/source/procyon/typeloader/CachingClasspathTypeLoader.java b/enigma/src/main/java/cuchaz/enigma/source/procyon/typeloader/CachingClasspathTypeLoader.java index e702956..e702956 100644 --- a/src/main/java/cuchaz/enigma/source/procyon/typeloader/CachingClasspathTypeLoader.java +++ b/enigma/src/main/java/cuchaz/enigma/source/procyon/typeloader/CachingClasspathTypeLoader.java | |||
diff --git a/src/main/java/cuchaz/enigma/source/procyon/typeloader/CachingTypeLoader.java b/enigma/src/main/java/cuchaz/enigma/source/procyon/typeloader/CachingTypeLoader.java index 5be5ddd..5be5ddd 100644 --- a/src/main/java/cuchaz/enigma/source/procyon/typeloader/CachingTypeLoader.java +++ b/enigma/src/main/java/cuchaz/enigma/source/procyon/typeloader/CachingTypeLoader.java | |||
diff --git a/src/main/java/cuchaz/enigma/source/procyon/typeloader/CompiledSourceTypeLoader.java b/enigma/src/main/java/cuchaz/enigma/source/procyon/typeloader/CompiledSourceTypeLoader.java index e703d3b..e703d3b 100644 --- a/src/main/java/cuchaz/enigma/source/procyon/typeloader/CompiledSourceTypeLoader.java +++ b/enigma/src/main/java/cuchaz/enigma/source/procyon/typeloader/CompiledSourceTypeLoader.java | |||
diff --git a/src/main/java/cuchaz/enigma/source/procyon/typeloader/NoRetryMetadataSystem.java b/enigma/src/main/java/cuchaz/enigma/source/procyon/typeloader/NoRetryMetadataSystem.java index c4732b0..c4732b0 100644 --- a/src/main/java/cuchaz/enigma/source/procyon/typeloader/NoRetryMetadataSystem.java +++ b/enigma/src/main/java/cuchaz/enigma/source/procyon/typeloader/NoRetryMetadataSystem.java | |||
diff --git a/src/main/java/cuchaz/enigma/source/procyon/typeloader/SynchronizedTypeLoader.java b/enigma/src/main/java/cuchaz/enigma/source/procyon/typeloader/SynchronizedTypeLoader.java index 86c6ecc..86c6ecc 100644 --- a/src/main/java/cuchaz/enigma/source/procyon/typeloader/SynchronizedTypeLoader.java +++ b/enigma/src/main/java/cuchaz/enigma/source/procyon/typeloader/SynchronizedTypeLoader.java | |||
diff --git a/src/main/java/cuchaz/enigma/translation/LocalNameGenerator.java b/enigma/src/main/java/cuchaz/enigma/translation/LocalNameGenerator.java index 18c966c..18c966c 100644 --- a/src/main/java/cuchaz/enigma/translation/LocalNameGenerator.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/LocalNameGenerator.java | |||
diff --git a/src/main/java/cuchaz/enigma/translation/MappingTranslator.java b/enigma/src/main/java/cuchaz/enigma/translation/MappingTranslator.java index 529d0ed..529d0ed 100644 --- a/src/main/java/cuchaz/enigma/translation/MappingTranslator.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/MappingTranslator.java | |||
diff --git a/src/main/java/cuchaz/enigma/ProposingTranslator.java b/enigma/src/main/java/cuchaz/enigma/translation/ProposingTranslator.java index 018fbfd..97866e9 100644 --- a/src/main/java/cuchaz/enigma/ProposingTranslator.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/ProposingTranslator.java | |||
| @@ -1,8 +1,6 @@ | |||
| 1 | package cuchaz.enigma; | 1 | package cuchaz.enigma.translation; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.api.service.NameProposalService; | 3 | import cuchaz.enigma.api.service.NameProposalService; |
| 4 | import cuchaz.enigma.translation.Translatable; | ||
| 5 | import cuchaz.enigma.translation.Translator; | ||
| 6 | import cuchaz.enigma.translation.mapping.EntryRemapper; | 4 | import cuchaz.enigma.translation.mapping.EntryRemapper; |
| 7 | import cuchaz.enigma.translation.mapping.ResolutionStrategy; | 5 | import cuchaz.enigma.translation.mapping.ResolutionStrategy; |
| 8 | import cuchaz.enigma.translation.representation.entry.Entry; | 6 | import cuchaz.enigma.translation.representation.entry.Entry; |
diff --git a/src/main/java/cuchaz/enigma/translation/SignatureUpdater.java b/enigma/src/main/java/cuchaz/enigma/translation/SignatureUpdater.java index 3783053..3783053 100644 --- a/src/main/java/cuchaz/enigma/translation/SignatureUpdater.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/SignatureUpdater.java | |||
diff --git a/src/main/java/cuchaz/enigma/translation/Translatable.java b/enigma/src/main/java/cuchaz/enigma/translation/Translatable.java index 0370ef1..0370ef1 100644 --- a/src/main/java/cuchaz/enigma/translation/Translatable.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/Translatable.java | |||
diff --git a/src/main/java/cuchaz/enigma/translation/TranslationDirection.java b/enigma/src/main/java/cuchaz/enigma/translation/TranslationDirection.java index 2ecb30b..2ecb30b 100644 --- a/src/main/java/cuchaz/enigma/translation/TranslationDirection.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/TranslationDirection.java | |||
diff --git a/src/main/java/cuchaz/enigma/translation/Translator.java b/enigma/src/main/java/cuchaz/enigma/translation/Translator.java index c70141f..c70141f 100644 --- a/src/main/java/cuchaz/enigma/translation/Translator.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/Translator.java | |||
diff --git a/src/main/java/cuchaz/enigma/translation/VoidTranslator.java b/enigma/src/main/java/cuchaz/enigma/translation/VoidTranslator.java index c010833..c010833 100644 --- a/src/main/java/cuchaz/enigma/translation/VoidTranslator.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/VoidTranslator.java | |||
diff --git a/src/main/java/cuchaz/enigma/translation/mapping/AccessModifier.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/AccessModifier.java index 5b79b79..5b79b79 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/AccessModifier.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/AccessModifier.java | |||
diff --git a/src/main/java/cuchaz/enigma/translation/mapping/EntryMap.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/EntryMap.java index e1a3253..e1a3253 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/EntryMap.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/EntryMap.java | |||
diff --git a/src/main/java/cuchaz/enigma/translation/mapping/EntryMapping.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/EntryMapping.java index c607817..c607817 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/EntryMapping.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/EntryMapping.java | |||
diff --git a/src/main/java/cuchaz/enigma/translation/mapping/EntryRemapper.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/EntryRemapper.java index ad36c97..1dd7eac 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/EntryRemapper.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/EntryRemapper.java | |||
| @@ -11,7 +11,6 @@ import cuchaz.enigma.translation.representation.entry.Entry; | |||
| 11 | 11 | ||
| 12 | import javax.annotation.Nullable; | 12 | import javax.annotation.Nullable; |
| 13 | import java.util.Collection; | 13 | import java.util.Collection; |
| 14 | import java.util.function.UnaryOperator; | ||
| 15 | import java.util.stream.Stream; | 14 | import java.util.stream.Stream; |
| 16 | 15 | ||
| 17 | public class EntryRemapper { | 16 | public class EntryRemapper { |
diff --git a/src/main/java/cuchaz/enigma/translation/mapping/EntryResolver.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/EntryResolver.java index 521f72d..521f72d 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/EntryResolver.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/EntryResolver.java | |||
diff --git a/src/main/java/cuchaz/enigma/throwables/IllegalNameException.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/IllegalNameException.java index 0155ad2..a7f83cd 100644 --- a/src/main/java/cuchaz/enigma/throwables/IllegalNameException.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/IllegalNameException.java | |||
| @@ -9,7 +9,7 @@ | |||
| 9 | * Jeff Martin - initial API and implementation | 9 | * Jeff Martin - initial API and implementation |
| 10 | ******************************************************************************/ | 10 | ******************************************************************************/ |
| 11 | 11 | ||
| 12 | package cuchaz.enigma.throwables; | 12 | package cuchaz.enigma.translation.mapping; |
| 13 | 13 | ||
| 14 | public class IllegalNameException extends RuntimeException { | 14 | public class IllegalNameException extends RuntimeException { |
| 15 | 15 | ||
diff --git a/src/main/java/cuchaz/enigma/translation/mapping/IndexEntryResolver.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/IndexEntryResolver.java index 78231dd..78231dd 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/IndexEntryResolver.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/IndexEntryResolver.java | |||
diff --git a/src/main/java/cuchaz/enigma/translation/mapping/MappingDelta.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/MappingDelta.java index 1407bb6..1407bb6 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/MappingDelta.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/MappingDelta.java | |||
diff --git a/enigma/src/main/java/cuchaz/enigma/translation/mapping/MappingOperations.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/MappingOperations.java new file mode 100644 index 0000000..2c03748 --- /dev/null +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/MappingOperations.java | |||
| @@ -0,0 +1,71 @@ | |||
| 1 | package cuchaz.enigma.translation.mapping; | ||
| 2 | |||
| 3 | import cuchaz.enigma.translation.mapping.tree.EntryTree; | ||
| 4 | import cuchaz.enigma.translation.mapping.tree.EntryTreeNode; | ||
| 5 | import cuchaz.enigma.translation.mapping.tree.HashEntryTree; | ||
| 6 | import cuchaz.enigma.translation.MappingTranslator; | ||
| 7 | import cuchaz.enigma.translation.Translator; | ||
| 8 | import cuchaz.enigma.translation.representation.entry.ClassEntry; | ||
| 9 | import cuchaz.enigma.translation.representation.entry.Entry; | ||
| 10 | import cuchaz.enigma.translation.representation.entry.FieldEntry; | ||
| 11 | import cuchaz.enigma.translation.representation.entry.MethodEntry; | ||
| 12 | |||
| 13 | import java.util.HashSet; | ||
| 14 | import java.util.Set; | ||
| 15 | |||
| 16 | public class MappingOperations { | ||
| 17 | public static EntryTree<EntryMapping> invert(EntryTree<EntryMapping> mappings) { | ||
| 18 | Translator translator = new MappingTranslator(mappings, VoidEntryResolver.INSTANCE); | ||
| 19 | EntryTree<EntryMapping> result = new HashEntryTree<>(); | ||
| 20 | |||
| 21 | for (EntryTreeNode<EntryMapping> node : mappings) { | ||
| 22 | Entry<?> leftEntry = node.getEntry(); | ||
| 23 | EntryMapping leftMapping = node.getValue(); | ||
| 24 | |||
| 25 | if (!(leftEntry instanceof ClassEntry || leftEntry instanceof MethodEntry || leftEntry instanceof FieldEntry)) { | ||
| 26 | result.insert(translator.translate(leftEntry), leftMapping); | ||
| 27 | continue; | ||
| 28 | } | ||
| 29 | |||
| 30 | Entry<?> rightEntry = translator.translate(leftEntry); | ||
| 31 | |||
| 32 | result.insert(rightEntry, leftMapping == null ? null : leftMapping.withName(leftEntry.getName())); | ||
| 33 | } | ||
| 34 | |||
| 35 | return result; | ||
| 36 | } | ||
| 37 | |||
| 38 | public static EntryTree<EntryMapping> compose(EntryTree<EntryMapping> left, EntryTree<EntryMapping> right, boolean keepLeftOnly, boolean keepRightOnly) { | ||
| 39 | Translator leftTranslator = new MappingTranslator(left, VoidEntryResolver.INSTANCE); | ||
| 40 | EntryTree<EntryMapping> result = new HashEntryTree<>(); | ||
| 41 | Set<Entry<?>> addedMappings = new HashSet<>(); | ||
| 42 | |||
| 43 | for (EntryTreeNode<EntryMapping> node : left) { | ||
| 44 | Entry<?> leftEntry = node.getEntry(); | ||
| 45 | EntryMapping leftMapping = node.getValue(); | ||
| 46 | |||
| 47 | Entry<?> rightEntry = leftTranslator.translate(leftEntry); | ||
| 48 | |||
| 49 | EntryMapping rightMapping = right.get(rightEntry); | ||
| 50 | if (rightMapping != null) { | ||
| 51 | result.insert(leftEntry, rightMapping); | ||
| 52 | addedMappings.add(rightEntry); | ||
| 53 | } else if (keepLeftOnly) { | ||
| 54 | result.insert(leftEntry, leftMapping); | ||
| 55 | } | ||
| 56 | } | ||
| 57 | |||
| 58 | if (keepRightOnly) { | ||
| 59 | Translator leftInverseTranslator = new MappingTranslator(invert(left), VoidEntryResolver.INSTANCE); | ||
| 60 | for (EntryTreeNode<EntryMapping> node : right) { | ||
| 61 | Entry<?> rightEntry = node.getEntry(); | ||
| 62 | EntryMapping rightMapping = node.getValue(); | ||
| 63 | |||
| 64 | if (!addedMappings.contains(rightEntry)) { | ||
| 65 | result.insert(leftInverseTranslator.translate(rightEntry), rightMapping); | ||
| 66 | } | ||
| 67 | } | ||
| 68 | } | ||
| 69 | return result; | ||
| 70 | } | ||
| 71 | } | ||
diff --git a/src/main/java/cuchaz/enigma/translation/mapping/MappingPair.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/MappingPair.java index 5d39e3d..5d39e3d 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/MappingPair.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/MappingPair.java | |||
diff --git a/src/main/java/cuchaz/enigma/translation/mapping/MappingValidator.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/MappingValidator.java index dffcb0c..ae615da 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/MappingValidator.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/MappingValidator.java | |||
| @@ -2,7 +2,6 @@ package cuchaz.enigma.translation.mapping; | |||
| 2 | 2 | ||
| 3 | import cuchaz.enigma.analysis.index.InheritanceIndex; | 3 | import cuchaz.enigma.analysis.index.InheritanceIndex; |
| 4 | import cuchaz.enigma.analysis.index.JarIndex; | 4 | import cuchaz.enigma.analysis.index.JarIndex; |
| 5 | import cuchaz.enigma.throwables.IllegalNameException; | ||
| 6 | import cuchaz.enigma.translation.Translator; | 5 | import cuchaz.enigma.translation.Translator; |
| 7 | import cuchaz.enigma.translation.mapping.tree.EntryTree; | 6 | import cuchaz.enigma.translation.mapping.tree.EntryTree; |
| 8 | import cuchaz.enigma.translation.representation.entry.ClassEntry; | 7 | import cuchaz.enigma.translation.representation.entry.ClassEntry; |
diff --git a/src/main/java/cuchaz/enigma/translation/mapping/MappingsChecker.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/MappingsChecker.java index 5d9794f..5d9794f 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/MappingsChecker.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/MappingsChecker.java | |||
diff --git a/src/main/java/cuchaz/enigma/translation/mapping/NameValidator.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/NameValidator.java index 5bc2f67..74ba633 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/NameValidator.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/NameValidator.java | |||
| @@ -11,9 +11,6 @@ | |||
| 11 | 11 | ||
| 12 | package cuchaz.enigma.translation.mapping; | 12 | package cuchaz.enigma.translation.mapping; |
| 13 | 13 | ||
| 14 | import cuchaz.enigma.throwables.IllegalNameException; | ||
| 15 | import cuchaz.enigma.translation.representation.entry.ClassEntry; | ||
| 16 | |||
| 17 | import java.util.Arrays; | 14 | import java.util.Arrays; |
| 18 | import java.util.List; | 15 | import java.util.List; |
| 19 | import java.util.regex.Pattern; | 16 | import java.util.regex.Pattern; |
diff --git a/src/main/java/cuchaz/enigma/translation/mapping/ResolutionStrategy.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/ResolutionStrategy.java index 1c28e02..1c28e02 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/ResolutionStrategy.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/ResolutionStrategy.java | |||
diff --git a/src/main/java/cuchaz/enigma/translation/mapping/VoidEntryResolver.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/VoidEntryResolver.java index 2eab55f..2eab55f 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/VoidEntryResolver.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/VoidEntryResolver.java | |||
diff --git a/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/LfPrintWriter.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/LfPrintWriter.java new file mode 100644 index 0000000..441949c --- /dev/null +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/LfPrintWriter.java | |||
| @@ -0,0 +1,16 @@ | |||
| 1 | package cuchaz.enigma.translation.mapping.serde; | ||
| 2 | |||
| 3 | import java.io.PrintWriter; | ||
| 4 | import java.io.Writer; | ||
| 5 | |||
| 6 | public class LfPrintWriter extends PrintWriter { | ||
| 7 | public LfPrintWriter(Writer out) { | ||
| 8 | super(out); | ||
| 9 | } | ||
| 10 | |||
| 11 | @Override | ||
| 12 | public void println() { | ||
| 13 | // https://stackoverflow.com/a/14749004 | ||
| 14 | write('\n'); | ||
| 15 | } | ||
| 16 | } | ||
diff --git a/src/main/java/cuchaz/enigma/translation/mapping/MappingFileNameFormat.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingFileNameFormat.java index e40bfe7..9bc013c 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/MappingFileNameFormat.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingFileNameFormat.java | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | package cuchaz.enigma.translation.mapping; | 1 | package cuchaz.enigma.translation.mapping.serde; |
| 2 | 2 | ||
| 3 | import com.google.gson.annotations.SerializedName; | 3 | import com.google.gson.annotations.SerializedName; |
| 4 | 4 | ||
diff --git a/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingFormat.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingFormat.java index 6c8c343..ca275eb 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingFormat.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingFormat.java | |||
| @@ -1,10 +1,16 @@ | |||
| 1 | package cuchaz.enigma.translation.mapping.serde; | 1 | package cuchaz.enigma.translation.mapping.serde; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.ProgressListener; | 3 | import cuchaz.enigma.ProgressListener; |
| 4 | import cuchaz.enigma.throwables.MappingParseException; | ||
| 5 | import cuchaz.enigma.translation.mapping.EntryMapping; | 4 | import cuchaz.enigma.translation.mapping.EntryMapping; |
| 6 | import cuchaz.enigma.translation.mapping.MappingDelta; | 5 | import cuchaz.enigma.translation.mapping.MappingDelta; |
| 7 | import cuchaz.enigma.translation.mapping.MappingSaveParameters; | 6 | import cuchaz.enigma.translation.mapping.serde.enigma.EnigmaMappingsReader; |
| 7 | import cuchaz.enigma.translation.mapping.serde.enigma.EnigmaMappingsWriter; | ||
| 8 | import cuchaz.enigma.translation.mapping.serde.proguard.ProguardMappingsReader; | ||
| 9 | import cuchaz.enigma.translation.mapping.serde.srg.SrgMappingsWriter; | ||
| 10 | import cuchaz.enigma.translation.mapping.serde.tiny.TinyMappingsReader; | ||
| 11 | import cuchaz.enigma.translation.mapping.serde.tiny.TinyMappingsWriter; | ||
| 12 | import cuchaz.enigma.translation.mapping.serde.tinyv2.TinyV2Reader; | ||
| 13 | import cuchaz.enigma.translation.mapping.serde.tinyv2.TinyV2Writer; | ||
| 8 | import cuchaz.enigma.translation.mapping.tree.EntryTree; | 14 | import cuchaz.enigma.translation.mapping.tree.EntryTree; |
| 9 | 15 | ||
| 10 | import javax.annotation.Nullable; | 16 | import javax.annotation.Nullable; |
diff --git a/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingHelper.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingHelper.java index 7c8f6cc..7c8f6cc 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingHelper.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingHelper.java | |||
diff --git a/src/main/java/cuchaz/enigma/throwables/MappingParseException.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingParseException.java index b7e6d42..9d04b97 100644 --- a/src/main/java/cuchaz/enigma/throwables/MappingParseException.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingParseException.java | |||
| @@ -9,7 +9,7 @@ | |||
| 9 | * Jeff Martin - initial API and implementation | 9 | * Jeff Martin - initial API and implementation |
| 10 | ******************************************************************************/ | 10 | ******************************************************************************/ |
| 11 | 11 | ||
| 12 | package cuchaz.enigma.throwables; | 12 | package cuchaz.enigma.translation.mapping.serde; |
| 13 | 13 | ||
| 14 | import java.io.File; | 14 | import java.io.File; |
| 15 | import java.util.function.Supplier; | 15 | import java.util.function.Supplier; |
diff --git a/src/main/java/cuchaz/enigma/translation/mapping/MappingSaveParameters.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingSaveParameters.java index 07065d6..e78fd95 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/MappingSaveParameters.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingSaveParameters.java | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | package cuchaz.enigma.translation.mapping; | 1 | package cuchaz.enigma.translation.mapping.serde; |
| 2 | 2 | ||
| 3 | import com.google.gson.annotations.SerializedName; | 3 | import com.google.gson.annotations.SerializedName; |
| 4 | 4 | ||
diff --git a/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingsReader.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingsReader.java index 4c60787..2f01375 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingsReader.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingsReader.java | |||
| @@ -1,9 +1,7 @@ | |||
| 1 | package cuchaz.enigma.translation.mapping.serde; | 1 | package cuchaz.enigma.translation.mapping.serde; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.ProgressListener; | 3 | import cuchaz.enigma.ProgressListener; |
| 4 | import cuchaz.enigma.throwables.MappingParseException; | ||
| 5 | import cuchaz.enigma.translation.mapping.EntryMapping; | 4 | import cuchaz.enigma.translation.mapping.EntryMapping; |
| 6 | import cuchaz.enigma.translation.mapping.MappingSaveParameters; | ||
| 7 | import cuchaz.enigma.translation.mapping.tree.EntryTree; | 5 | import cuchaz.enigma.translation.mapping.tree.EntryTree; |
| 8 | 6 | ||
| 9 | import java.io.IOException; | 7 | import java.io.IOException; |
diff --git a/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingsWriter.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingsWriter.java index 8815986..68a8dbb 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingsWriter.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/MappingsWriter.java | |||
| @@ -3,7 +3,6 @@ package cuchaz.enigma.translation.mapping.serde; | |||
| 3 | import cuchaz.enigma.ProgressListener; | 3 | import cuchaz.enigma.ProgressListener; |
| 4 | import cuchaz.enigma.translation.mapping.EntryMapping; | 4 | import cuchaz.enigma.translation.mapping.EntryMapping; |
| 5 | import cuchaz.enigma.translation.mapping.MappingDelta; | 5 | import cuchaz.enigma.translation.mapping.MappingDelta; |
| 6 | import cuchaz.enigma.translation.mapping.MappingSaveParameters; | ||
| 7 | import cuchaz.enigma.translation.mapping.tree.EntryTree; | 6 | import cuchaz.enigma.translation.mapping.tree.EntryTree; |
| 8 | 7 | ||
| 9 | import java.nio.file.Path; | 8 | import java.nio.file.Path; |
diff --git a/src/main/java/cuchaz/enigma/translation/mapping/serde/RawEntryMapping.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/RawEntryMapping.java index afb40e9..79587a0 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/serde/RawEntryMapping.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/RawEntryMapping.java | |||
| @@ -6,25 +6,25 @@ import cuchaz.enigma.translation.mapping.EntryMapping; | |||
| 6 | import java.util.ArrayList; | 6 | import java.util.ArrayList; |
| 7 | import java.util.List; | 7 | import java.util.List; |
| 8 | 8 | ||
| 9 | final class RawEntryMapping { | 9 | public final class RawEntryMapping { |
| 10 | private final String targetName; | 10 | private final String targetName; |
| 11 | private final AccessModifier access; | 11 | private final AccessModifier access; |
| 12 | private List<String> javadocs = new ArrayList<>(); | 12 | private List<String> javadocs = new ArrayList<>(); |
| 13 | 13 | ||
| 14 | RawEntryMapping(String targetName) { | 14 | public RawEntryMapping(String targetName) { |
| 15 | this(targetName, null); | 15 | this(targetName, null); |
| 16 | } | 16 | } |
| 17 | 17 | ||
| 18 | RawEntryMapping(String targetName, AccessModifier access) { | 18 | public RawEntryMapping(String targetName, AccessModifier access) { |
| 19 | this.access = access; | 19 | this.access = access; |
| 20 | this.targetName = targetName; | 20 | this.targetName = targetName; |
| 21 | } | 21 | } |
| 22 | 22 | ||
| 23 | void addJavadocLine(String line) { | 23 | public void addJavadocLine(String line) { |
| 24 | javadocs.add(line); | 24 | javadocs.add(line); |
| 25 | } | 25 | } |
| 26 | 26 | ||
| 27 | EntryMapping bake() { | 27 | public EntryMapping bake() { |
| 28 | return new EntryMapping(targetName, access, javadocs.isEmpty() ? null : String.join("\n", javadocs)); | 28 | return new EntryMapping(targetName, access, javadocs.isEmpty() ? null : String.join("\n", javadocs)); |
| 29 | } | 29 | } |
| 30 | } | 30 | } |
diff --git a/src/main/java/cuchaz/enigma/translation/mapping/serde/EnigmaFormat.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaFormat.java index af92ffb..210d328 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/serde/EnigmaFormat.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaFormat.java | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | package cuchaz.enigma.translation.mapping.serde; | 1 | package cuchaz.enigma.translation.mapping.serde.enigma; |
| 2 | 2 | ||
| 3 | public class EnigmaFormat { | 3 | public class EnigmaFormat { |
| 4 | public static final String COMMENT = "COMMENT"; | 4 | public static final String COMMENT = "COMMENT"; |
diff --git a/src/main/java/cuchaz/enigma/translation/mapping/serde/EnigmaMappingsReader.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaMappingsReader.java index 53bbaa3..30de85f 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/serde/EnigmaMappingsReader.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaMappingsReader.java | |||
| @@ -1,12 +1,15 @@ | |||
| 1 | package cuchaz.enigma.translation.mapping.serde; | 1 | package cuchaz.enigma.translation.mapping.serde.enigma; |
| 2 | 2 | ||
| 3 | import com.google.common.base.Charsets; | 3 | import com.google.common.base.Charsets; |
| 4 | import cuchaz.enigma.ProgressListener; | 4 | import cuchaz.enigma.ProgressListener; |
| 5 | import cuchaz.enigma.throwables.MappingParseException; | 5 | import cuchaz.enigma.translation.mapping.serde.MappingParseException; |
| 6 | import cuchaz.enigma.translation.mapping.AccessModifier; | 6 | import cuchaz.enigma.translation.mapping.AccessModifier; |
| 7 | import cuchaz.enigma.translation.mapping.EntryMapping; | 7 | import cuchaz.enigma.translation.mapping.EntryMapping; |
| 8 | import cuchaz.enigma.translation.mapping.MappingPair; | 8 | import cuchaz.enigma.translation.mapping.MappingPair; |
| 9 | import cuchaz.enigma.translation.mapping.MappingSaveParameters; | 9 | import cuchaz.enigma.translation.mapping.serde.MappingSaveParameters; |
| 10 | import cuchaz.enigma.translation.mapping.serde.MappingHelper; | ||
| 11 | import cuchaz.enigma.translation.mapping.serde.MappingsReader; | ||
| 12 | import cuchaz.enigma.translation.mapping.serde.RawEntryMapping; | ||
| 10 | import cuchaz.enigma.translation.mapping.tree.EntryTree; | 13 | import cuchaz.enigma.translation.mapping.tree.EntryTree; |
| 11 | import cuchaz.enigma.translation.mapping.tree.HashEntryTree; | 14 | import cuchaz.enigma.translation.mapping.tree.HashEntryTree; |
| 12 | import cuchaz.enigma.translation.representation.MethodDescriptor; | 15 | import cuchaz.enigma.translation.representation.MethodDescriptor; |
diff --git a/src/main/java/cuchaz/enigma/translation/mapping/serde/EnigmaMappingsWriter.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaMappingsWriter.java index be0fceb..7570d4b 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/serde/EnigmaMappingsWriter.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaMappingsWriter.java | |||
| @@ -9,7 +9,7 @@ | |||
| 9 | * Jeff Martin - initial API and implementation | 9 | * Jeff Martin - initial API and implementation |
| 10 | ******************************************************************************/ | 10 | ******************************************************************************/ |
| 11 | 11 | ||
| 12 | package cuchaz.enigma.translation.mapping.serde; | 12 | package cuchaz.enigma.translation.mapping.serde.enigma; |
| 13 | 13 | ||
| 14 | import java.io.IOException; | 14 | import java.io.IOException; |
| 15 | import java.io.PrintWriter; | 15 | import java.io.PrintWriter; |
| @@ -35,9 +35,12 @@ import cuchaz.enigma.translation.Translator; | |||
| 35 | import cuchaz.enigma.translation.mapping.AccessModifier; | 35 | import cuchaz.enigma.translation.mapping.AccessModifier; |
| 36 | import cuchaz.enigma.translation.mapping.EntryMapping; | 36 | import cuchaz.enigma.translation.mapping.EntryMapping; |
| 37 | import cuchaz.enigma.translation.mapping.MappingDelta; | 37 | import cuchaz.enigma.translation.mapping.MappingDelta; |
| 38 | import cuchaz.enigma.translation.mapping.MappingFileNameFormat; | 38 | import cuchaz.enigma.translation.mapping.serde.MappingFileNameFormat; |
| 39 | import cuchaz.enigma.translation.mapping.MappingSaveParameters; | 39 | import cuchaz.enigma.translation.mapping.serde.MappingSaveParameters; |
| 40 | import cuchaz.enigma.translation.mapping.VoidEntryResolver; | 40 | import cuchaz.enigma.translation.mapping.VoidEntryResolver; |
| 41 | import cuchaz.enigma.translation.mapping.serde.LfPrintWriter; | ||
| 42 | import cuchaz.enigma.translation.mapping.serde.MappingHelper; | ||
| 43 | import cuchaz.enigma.translation.mapping.serde.MappingsWriter; | ||
| 41 | import cuchaz.enigma.translation.mapping.tree.EntryTree; | 44 | import cuchaz.enigma.translation.mapping.tree.EntryTree; |
| 42 | import cuchaz.enigma.translation.mapping.tree.EntryTreeNode; | 45 | import cuchaz.enigma.translation.mapping.tree.EntryTreeNode; |
| 43 | import cuchaz.enigma.translation.representation.entry.ClassEntry; | 46 | import cuchaz.enigma.translation.representation.entry.ClassEntry; |
| @@ -46,7 +49,6 @@ import cuchaz.enigma.translation.representation.entry.FieldEntry; | |||
| 46 | import cuchaz.enigma.translation.representation.entry.LocalVariableEntry; | 49 | import cuchaz.enigma.translation.representation.entry.LocalVariableEntry; |
| 47 | import cuchaz.enigma.translation.representation.entry.MethodEntry; | 50 | import cuchaz.enigma.translation.representation.entry.MethodEntry; |
| 48 | import cuchaz.enigma.utils.I18n; | 51 | import cuchaz.enigma.utils.I18n; |
| 49 | import cuchaz.enigma.utils.LFPrintWriter; | ||
| 50 | 52 | ||
| 51 | public enum EnigmaMappingsWriter implements MappingsWriter { | 53 | public enum EnigmaMappingsWriter implements MappingsWriter { |
| 52 | FILE { | 54 | FILE { |
| @@ -60,7 +62,7 @@ public enum EnigmaMappingsWriter implements MappingsWriter { | |||
| 60 | progress.init(classes.size(), I18n.translate("progress.mappings.enigma_file.writing")); | 62 | progress.init(classes.size(), I18n.translate("progress.mappings.enigma_file.writing")); |
| 61 | 63 | ||
| 62 | int steps = 0; | 64 | int steps = 0; |
| 63 | try (PrintWriter writer = new LFPrintWriter(Files.newBufferedWriter(path))) { | 65 | try (PrintWriter writer = new LfPrintWriter(Files.newBufferedWriter(path))) { |
| 64 | for (ClassEntry classEntry : classes) { | 66 | for (ClassEntry classEntry : classes) { |
| 65 | progress.step(steps++, classEntry.getFullName()); | 67 | progress.step(steps++, classEntry.getFullName()); |
| 66 | writeRoot(writer, mappings, classEntry); | 68 | writeRoot(writer, mappings, classEntry); |
| @@ -98,7 +100,7 @@ public enum EnigmaMappingsWriter implements MappingsWriter { | |||
| 98 | Files.createDirectories(classPath.getParent()); | 100 | Files.createDirectories(classPath.getParent()); |
| 99 | Files.deleteIfExists(classPath); | 101 | Files.deleteIfExists(classPath); |
| 100 | 102 | ||
| 101 | try (PrintWriter writer = new LFPrintWriter(Files.newBufferedWriter(classPath))) { | 103 | try (PrintWriter writer = new LfPrintWriter(Files.newBufferedWriter(classPath))) { |
| 102 | writeRoot(writer, mappings, classEntry); | 104 | writeRoot(writer, mappings, classEntry); |
| 103 | } | 105 | } |
| 104 | } catch (Throwable t) { | 106 | } catch (Throwable t) { |
diff --git a/src/main/java/cuchaz/enigma/translation/mapping/serde/ProguardMappingsReader.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/proguard/ProguardMappingsReader.java index b5ede39..034fb41 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/serde/ProguardMappingsReader.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/proguard/ProguardMappingsReader.java | |||
| @@ -1,10 +1,11 @@ | |||
| 1 | package cuchaz.enigma.translation.mapping.serde; | 1 | package cuchaz.enigma.translation.mapping.serde.proguard; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.ProgressListener; | 3 | import cuchaz.enigma.ProgressListener; |
| 4 | import cuchaz.enigma.command.MappingCommandsUtil; | 4 | import cuchaz.enigma.translation.mapping.MappingOperations; |
| 5 | import cuchaz.enigma.throwables.MappingParseException; | 5 | import cuchaz.enigma.translation.mapping.serde.MappingParseException; |
| 6 | import cuchaz.enigma.translation.mapping.EntryMapping; | 6 | import cuchaz.enigma.translation.mapping.EntryMapping; |
| 7 | import cuchaz.enigma.translation.mapping.MappingSaveParameters; | 7 | import cuchaz.enigma.translation.mapping.serde.MappingSaveParameters; |
| 8 | import cuchaz.enigma.translation.mapping.serde.MappingsReader; | ||
| 8 | import cuchaz.enigma.translation.mapping.tree.EntryTree; | 9 | import cuchaz.enigma.translation.mapping.tree.EntryTree; |
| 9 | import cuchaz.enigma.translation.mapping.tree.HashEntryTree; | 10 | import cuchaz.enigma.translation.mapping.tree.HashEntryTree; |
| 10 | import cuchaz.enigma.translation.representation.MethodDescriptor; | 11 | import cuchaz.enigma.translation.representation.MethodDescriptor; |
| @@ -79,7 +80,7 @@ public class ProguardMappingsReader implements MappingsReader { | |||
| 79 | } | 80 | } |
| 80 | } | 81 | } |
| 81 | 82 | ||
| 82 | return MappingCommandsUtil.invert(mappings); | 83 | return MappingOperations.invert(mappings); |
| 83 | } | 84 | } |
| 84 | 85 | ||
| 85 | private String getDescriptor(String type) { | 86 | private String getDescriptor(String type) { |
diff --git a/src/main/java/cuchaz/enigma/translation/mapping/serde/SrgMappingsWriter.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/srg/SrgMappingsWriter.java index f67f8fc..9c9f103 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/serde/SrgMappingsWriter.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/srg/SrgMappingsWriter.java | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | package cuchaz.enigma.translation.mapping.serde; | 1 | package cuchaz.enigma.translation.mapping.serde.srg; |
| 2 | 2 | ||
| 3 | import com.google.common.collect.Lists; | 3 | import com.google.common.collect.Lists; |
| 4 | import cuchaz.enigma.ProgressListener; | 4 | import cuchaz.enigma.ProgressListener; |
| @@ -6,8 +6,10 @@ import cuchaz.enigma.translation.MappingTranslator; | |||
| 6 | import cuchaz.enigma.translation.Translator; | 6 | import cuchaz.enigma.translation.Translator; |
| 7 | import cuchaz.enigma.translation.mapping.EntryMapping; | 7 | import cuchaz.enigma.translation.mapping.EntryMapping; |
| 8 | import cuchaz.enigma.translation.mapping.MappingDelta; | 8 | import cuchaz.enigma.translation.mapping.MappingDelta; |
| 9 | import cuchaz.enigma.translation.mapping.MappingSaveParameters; | 9 | import cuchaz.enigma.translation.mapping.serde.MappingSaveParameters; |
| 10 | import cuchaz.enigma.translation.mapping.VoidEntryResolver; | 10 | import cuchaz.enigma.translation.mapping.VoidEntryResolver; |
| 11 | import cuchaz.enigma.translation.mapping.serde.LfPrintWriter; | ||
| 12 | import cuchaz.enigma.translation.mapping.serde.MappingsWriter; | ||
| 11 | import cuchaz.enigma.translation.mapping.tree.EntryTree; | 13 | import cuchaz.enigma.translation.mapping.tree.EntryTree; |
| 12 | import cuchaz.enigma.translation.mapping.tree.EntryTreeNode; | 14 | import cuchaz.enigma.translation.mapping.tree.EntryTreeNode; |
| 13 | import cuchaz.enigma.translation.representation.entry.ClassEntry; | 15 | import cuchaz.enigma.translation.representation.entry.ClassEntry; |
| @@ -15,7 +17,6 @@ import cuchaz.enigma.translation.representation.entry.Entry; | |||
| 15 | import cuchaz.enigma.translation.representation.entry.FieldEntry; | 17 | import cuchaz.enigma.translation.representation.entry.FieldEntry; |
| 16 | import cuchaz.enigma.translation.representation.entry.MethodEntry; | 18 | import cuchaz.enigma.translation.representation.entry.MethodEntry; |
| 17 | import cuchaz.enigma.utils.I18n; | 19 | import cuchaz.enigma.utils.I18n; |
| 18 | import cuchaz.enigma.utils.LFPrintWriter; | ||
| 19 | 20 | ||
| 20 | import java.io.IOException; | 21 | import java.io.IOException; |
| 21 | import java.io.PrintWriter; | 22 | import java.io.PrintWriter; |
| @@ -55,7 +56,7 @@ public enum SrgMappingsWriter implements MappingsWriter { | |||
| 55 | } | 56 | } |
| 56 | 57 | ||
| 57 | progress.init(3, I18n.translate("progress.mappings.srg_file.writing")); | 58 | progress.init(3, I18n.translate("progress.mappings.srg_file.writing")); |
| 58 | try (PrintWriter writer = new LFPrintWriter(Files.newBufferedWriter(path))) { | 59 | try (PrintWriter writer = new LfPrintWriter(Files.newBufferedWriter(path))) { |
| 59 | progress.step(0, I18n.translate("type.classes")); | 60 | progress.step(0, I18n.translate("type.classes")); |
| 60 | classLines.forEach(writer::println); | 61 | classLines.forEach(writer::println); |
| 61 | progress.step(1, I18n.translate("type.fields")); | 62 | progress.step(1, I18n.translate("type.fields")); |
diff --git a/src/main/java/cuchaz/enigma/translation/mapping/serde/TinyMappingsReader.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/tiny/TinyMappingsReader.java index 773c95e..f3c66df 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/serde/TinyMappingsReader.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/tiny/TinyMappingsReader.java | |||
| @@ -1,11 +1,12 @@ | |||
| 1 | package cuchaz.enigma.translation.mapping.serde; | 1 | package cuchaz.enigma.translation.mapping.serde.tiny; |
| 2 | 2 | ||
| 3 | import com.google.common.base.Charsets; | 3 | import com.google.common.base.Charsets; |
| 4 | import cuchaz.enigma.ProgressListener; | 4 | import cuchaz.enigma.ProgressListener; |
| 5 | import cuchaz.enigma.throwables.MappingParseException; | 5 | import cuchaz.enigma.translation.mapping.serde.MappingParseException; |
| 6 | import cuchaz.enigma.translation.mapping.EntryMapping; | 6 | import cuchaz.enigma.translation.mapping.EntryMapping; |
| 7 | import cuchaz.enigma.translation.mapping.MappingPair; | 7 | import cuchaz.enigma.translation.mapping.MappingPair; |
| 8 | import cuchaz.enigma.translation.mapping.MappingSaveParameters; | 8 | import cuchaz.enigma.translation.mapping.serde.MappingSaveParameters; |
| 9 | import cuchaz.enigma.translation.mapping.serde.MappingsReader; | ||
| 9 | import cuchaz.enigma.translation.mapping.tree.EntryTree; | 10 | import cuchaz.enigma.translation.mapping.tree.EntryTree; |
| 10 | import cuchaz.enigma.translation.mapping.tree.HashEntryTree; | 11 | import cuchaz.enigma.translation.mapping.tree.HashEntryTree; |
| 11 | import cuchaz.enigma.translation.representation.MethodDescriptor; | 12 | import cuchaz.enigma.translation.representation.MethodDescriptor; |
diff --git a/src/main/java/cuchaz/enigma/translation/mapping/serde/TinyMappingsWriter.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/tiny/TinyMappingsWriter.java index c82f262..4f78e6f 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/serde/TinyMappingsWriter.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/tiny/TinyMappingsWriter.java | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | package cuchaz.enigma.translation.mapping.serde; | 1 | package cuchaz.enigma.translation.mapping.serde.tiny; |
| 2 | 2 | ||
| 3 | import com.google.common.base.Joiner; | 3 | import com.google.common.base.Joiner; |
| 4 | import com.google.common.collect.Lists; | 4 | import com.google.common.collect.Lists; |
| @@ -7,8 +7,9 @@ import cuchaz.enigma.translation.MappingTranslator; | |||
| 7 | import cuchaz.enigma.translation.Translator; | 7 | import cuchaz.enigma.translation.Translator; |
| 8 | import cuchaz.enigma.translation.mapping.EntryMapping; | 8 | import cuchaz.enigma.translation.mapping.EntryMapping; |
| 9 | import cuchaz.enigma.translation.mapping.MappingDelta; | 9 | import cuchaz.enigma.translation.mapping.MappingDelta; |
| 10 | import cuchaz.enigma.translation.mapping.MappingSaveParameters; | 10 | import cuchaz.enigma.translation.mapping.serde.MappingSaveParameters; |
| 11 | import cuchaz.enigma.translation.mapping.VoidEntryResolver; | 11 | import cuchaz.enigma.translation.mapping.VoidEntryResolver; |
| 12 | import cuchaz.enigma.translation.mapping.serde.MappingsWriter; | ||
| 12 | import cuchaz.enigma.translation.mapping.tree.EntryTree; | 13 | import cuchaz.enigma.translation.mapping.tree.EntryTree; |
| 13 | import cuchaz.enigma.translation.mapping.tree.EntryTreeNode; | 14 | import cuchaz.enigma.translation.mapping.tree.EntryTreeNode; |
| 14 | import cuchaz.enigma.translation.representation.entry.ClassEntry; | 15 | import cuchaz.enigma.translation.representation.entry.ClassEntry; |
diff --git a/src/main/java/cuchaz/enigma/translation/mapping/serde/TinyV2Reader.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/tinyv2/TinyV2Reader.java index d81cbdb..dc25569 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/serde/TinyV2Reader.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/tinyv2/TinyV2Reader.java | |||
| @@ -1,10 +1,12 @@ | |||
| 1 | package cuchaz.enigma.translation.mapping.serde; | 1 | package cuchaz.enigma.translation.mapping.serde.tinyv2; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.ProgressListener; | 3 | import cuchaz.enigma.ProgressListener; |
| 4 | import cuchaz.enigma.throwables.MappingParseException; | 4 | import cuchaz.enigma.translation.mapping.serde.MappingParseException; |
| 5 | import cuchaz.enigma.translation.mapping.EntryMapping; | 5 | import cuchaz.enigma.translation.mapping.EntryMapping; |
| 6 | import cuchaz.enigma.translation.mapping.MappingPair; | 6 | import cuchaz.enigma.translation.mapping.MappingPair; |
| 7 | import cuchaz.enigma.translation.mapping.MappingSaveParameters; | 7 | import cuchaz.enigma.translation.mapping.serde.MappingSaveParameters; |
| 8 | import cuchaz.enigma.translation.mapping.serde.MappingsReader; | ||
| 9 | import cuchaz.enigma.translation.mapping.serde.RawEntryMapping; | ||
| 8 | import cuchaz.enigma.translation.mapping.tree.EntryTree; | 10 | import cuchaz.enigma.translation.mapping.tree.EntryTree; |
| 9 | import cuchaz.enigma.translation.mapping.tree.HashEntryTree; | 11 | import cuchaz.enigma.translation.mapping.tree.HashEntryTree; |
| 10 | import cuchaz.enigma.translation.representation.MethodDescriptor; | 12 | import cuchaz.enigma.translation.representation.MethodDescriptor; |
| @@ -14,7 +16,6 @@ import cuchaz.enigma.translation.representation.entry.Entry; | |||
| 14 | import cuchaz.enigma.translation.representation.entry.FieldEntry; | 16 | import cuchaz.enigma.translation.representation.entry.FieldEntry; |
| 15 | import cuchaz.enigma.translation.representation.entry.LocalVariableEntry; | 17 | import cuchaz.enigma.translation.representation.entry.LocalVariableEntry; |
| 16 | import cuchaz.enigma.translation.representation.entry.MethodEntry; | 18 | import cuchaz.enigma.translation.representation.entry.MethodEntry; |
| 17 | import cuchaz.enigma.utils.I18n; | ||
| 18 | 19 | ||
| 19 | import java.io.IOException; | 20 | import java.io.IOException; |
| 20 | import java.nio.charset.StandardCharsets; | 21 | import java.nio.charset.StandardCharsets; |
| @@ -23,7 +24,7 @@ import java.nio.file.Path; | |||
| 23 | import java.util.BitSet; | 24 | import java.util.BitSet; |
| 24 | import java.util.List; | 25 | import java.util.List; |
| 25 | 26 | ||
| 26 | final class TinyV2Reader implements MappingsReader { | 27 | public final class TinyV2Reader implements MappingsReader { |
| 27 | 28 | ||
| 28 | private static final String MINOR_VERSION = "0"; | 29 | private static final String MINOR_VERSION = "0"; |
| 29 | // 0 indent | 30 | // 0 indent |
| @@ -46,7 +47,7 @@ final class TinyV2Reader implements MappingsReader { | |||
| 46 | private EntryTree<EntryMapping> read(Path path, List<String> lines, ProgressListener progress) throws MappingParseException { | 47 | private EntryTree<EntryMapping> read(Path path, List<String> lines, ProgressListener progress) throws MappingParseException { |
| 47 | EntryTree<EntryMapping> mappings = new HashEntryTree<>(); | 48 | EntryTree<EntryMapping> mappings = new HashEntryTree<>(); |
| 48 | 49 | ||
| 49 | progress.init(lines.size(), I18n.translate("progress.mappings.tiny_v2.loading")); | 50 | progress.init(lines.size(), "progress.mappings.tiny_v2.loading"); |
| 50 | 51 | ||
| 51 | BitSet state = new BitSet(STATE_SIZE); | 52 | BitSet state = new BitSet(STATE_SIZE); |
| 52 | @SuppressWarnings({"unchecked", "rawtypes"}) | 53 | @SuppressWarnings({"unchecked", "rawtypes"}) |
diff --git a/src/main/java/cuchaz/enigma/translation/mapping/serde/TinyV2Writer.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/tinyv2/TinyV2Writer.java index 95e04c3..5546b2f 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/serde/TinyV2Writer.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/tinyv2/TinyV2Writer.java | |||
| @@ -1,11 +1,14 @@ | |||
| 1 | package cuchaz.enigma.translation.mapping.serde; | 1 | package cuchaz.enigma.translation.mapping.serde.tinyv2; |
| 2 | 2 | ||
| 3 | import com.google.common.base.Strings; | 3 | import com.google.common.base.Strings; |
| 4 | import cuchaz.enigma.ProgressListener; | 4 | import cuchaz.enigma.ProgressListener; |
| 5 | import cuchaz.enigma.translation.mapping.EntryMap; | 5 | import cuchaz.enigma.translation.mapping.EntryMap; |
| 6 | import cuchaz.enigma.translation.mapping.EntryMapping; | 6 | import cuchaz.enigma.translation.mapping.EntryMapping; |
| 7 | import cuchaz.enigma.translation.mapping.MappingDelta; | 7 | import cuchaz.enigma.translation.mapping.MappingDelta; |
| 8 | import cuchaz.enigma.translation.mapping.MappingSaveParameters; | 8 | import cuchaz.enigma.translation.mapping.serde.MappingSaveParameters; |
| 9 | import cuchaz.enigma.translation.mapping.serde.LfPrintWriter; | ||
| 10 | import cuchaz.enigma.translation.mapping.serde.MappingHelper; | ||
| 11 | import cuchaz.enigma.translation.mapping.serde.MappingsWriter; | ||
| 9 | import cuchaz.enigma.translation.mapping.tree.EntryTree; | 12 | import cuchaz.enigma.translation.mapping.tree.EntryTree; |
| 10 | import cuchaz.enigma.translation.mapping.tree.EntryTreeNode; | 13 | import cuchaz.enigma.translation.mapping.tree.EntryTreeNode; |
| 11 | import cuchaz.enigma.translation.representation.entry.ClassEntry; | 14 | import cuchaz.enigma.translation.representation.entry.ClassEntry; |
| @@ -13,7 +16,6 @@ import cuchaz.enigma.translation.representation.entry.Entry; | |||
| 13 | import cuchaz.enigma.translation.representation.entry.FieldEntry; | 16 | import cuchaz.enigma.translation.representation.entry.FieldEntry; |
| 14 | import cuchaz.enigma.translation.representation.entry.LocalVariableEntry; | 17 | import cuchaz.enigma.translation.representation.entry.LocalVariableEntry; |
| 15 | import cuchaz.enigma.translation.representation.entry.MethodEntry; | 18 | import cuchaz.enigma.translation.representation.entry.MethodEntry; |
| 16 | import cuchaz.enigma.utils.LFPrintWriter; | ||
| 17 | 19 | ||
| 18 | import java.io.IOException; | 20 | import java.io.IOException; |
| 19 | import java.io.PrintWriter; | 21 | import java.io.PrintWriter; |
| @@ -40,7 +42,7 @@ public final class TinyV2Writer implements MappingsWriter { | |||
| 40 | public void write(EntryTree<EntryMapping> mappings, MappingDelta<EntryMapping> delta, Path path, ProgressListener progress, MappingSaveParameters parameters) { | 42 | public void write(EntryTree<EntryMapping> mappings, MappingDelta<EntryMapping> delta, Path path, ProgressListener progress, MappingSaveParameters parameters) { |
| 41 | List<EntryTreeNode<EntryMapping>> classes = StreamSupport.stream(mappings.spliterator(), false).filter(node -> node.getEntry() instanceof ClassEntry).collect(Collectors.toList()); | 43 | List<EntryTreeNode<EntryMapping>> classes = StreamSupport.stream(mappings.spliterator(), false).filter(node -> node.getEntry() instanceof ClassEntry).collect(Collectors.toList()); |
| 42 | 44 | ||
| 43 | try (PrintWriter writer = new LFPrintWriter(Files.newBufferedWriter(path))) { | 45 | try (PrintWriter writer = new LfPrintWriter(Files.newBufferedWriter(path))) { |
| 44 | writer.println("tiny\t2\t" + MINOR_VERSION + "\t" + obfHeader + "\t" + deobfHeader); | 46 | writer.println("tiny\t2\t" + MINOR_VERSION + "\t" + obfHeader + "\t" + deobfHeader); |
| 45 | 47 | ||
| 46 | // no escape names | 48 | // no escape names |
| @@ -166,4 +168,5 @@ public final class TinyV2Writer implements MappingsWriter { | |||
| 166 | private String indent(int level) { | 168 | private String indent(int level) { |
| 167 | return Strings.repeat("\t", level); | 169 | return Strings.repeat("\t", level); |
| 168 | } | 170 | } |
| 171 | |||
| 169 | } | 172 | } |
diff --git a/src/main/java/cuchaz/enigma/translation/mapping/tree/DeltaTrackingTree.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/tree/DeltaTrackingTree.java index 255fa5f..255fa5f 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/tree/DeltaTrackingTree.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/tree/DeltaTrackingTree.java | |||
diff --git a/src/main/java/cuchaz/enigma/translation/mapping/tree/EntryTree.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/tree/EntryTree.java index daaefcc..daaefcc 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/tree/EntryTree.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/tree/EntryTree.java | |||
diff --git a/src/main/java/cuchaz/enigma/translation/mapping/tree/EntryTreeNode.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/tree/EntryTreeNode.java index affcd50..affcd50 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/tree/EntryTreeNode.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/tree/EntryTreeNode.java | |||
diff --git a/src/main/java/cuchaz/enigma/translation/mapping/tree/HashEntryTree.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/tree/HashEntryTree.java index 570941c..570941c 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/tree/HashEntryTree.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/tree/HashEntryTree.java | |||
diff --git a/src/main/java/cuchaz/enigma/translation/mapping/tree/HashTreeNode.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/tree/HashTreeNode.java index 0a990bd..0a990bd 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/tree/HashTreeNode.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/tree/HashTreeNode.java | |||
diff --git a/src/main/java/cuchaz/enigma/translation/representation/AccessFlags.java b/enigma/src/main/java/cuchaz/enigma/translation/representation/AccessFlags.java index b280eef..b280eef 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/AccessFlags.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/representation/AccessFlags.java | |||
diff --git a/src/main/java/cuchaz/enigma/translation/representation/Lambda.java b/enigma/src/main/java/cuchaz/enigma/translation/representation/Lambda.java index 63eb563..ad9389c 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/Lambda.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/representation/Lambda.java | |||
| @@ -1,105 +1,105 @@ | |||
| 1 | package cuchaz.enigma.translation.representation; | 1 | package cuchaz.enigma.translation.representation; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.translation.Translatable; | 3 | import cuchaz.enigma.translation.Translatable; |
| 4 | import cuchaz.enigma.translation.Translator; | 4 | import cuchaz.enigma.translation.Translator; |
| 5 | import cuchaz.enigma.translation.mapping.EntryMap; | 5 | import cuchaz.enigma.translation.mapping.EntryMap; |
| 6 | import cuchaz.enigma.translation.mapping.EntryMapping; | 6 | import cuchaz.enigma.translation.mapping.EntryMapping; |
| 7 | import cuchaz.enigma.translation.mapping.EntryResolver; | 7 | import cuchaz.enigma.translation.mapping.EntryResolver; |
| 8 | import cuchaz.enigma.translation.mapping.ResolutionStrategy; | 8 | import cuchaz.enigma.translation.mapping.ResolutionStrategy; |
| 9 | import cuchaz.enigma.translation.representation.entry.ClassEntry; | 9 | import cuchaz.enigma.translation.representation.entry.ClassEntry; |
| 10 | import cuchaz.enigma.translation.representation.entry.MethodEntry; | 10 | import cuchaz.enigma.translation.representation.entry.MethodEntry; |
| 11 | import cuchaz.enigma.translation.representation.entry.ParentedEntry; | 11 | import cuchaz.enigma.translation.representation.entry.ParentedEntry; |
| 12 | 12 | ||
| 13 | import java.util.Objects; | 13 | import java.util.Objects; |
| 14 | 14 | ||
| 15 | public class Lambda implements Translatable { | 15 | public class Lambda implements Translatable { |
| 16 | private final String invokedName; | 16 | private final String invokedName; |
| 17 | private final MethodDescriptor invokedType; | 17 | private final MethodDescriptor invokedType; |
| 18 | private final MethodDescriptor samMethodType; | 18 | private final MethodDescriptor samMethodType; |
| 19 | private final ParentedEntry<?> implMethod; | 19 | private final ParentedEntry<?> implMethod; |
| 20 | private final MethodDescriptor instantiatedMethodType; | 20 | private final MethodDescriptor instantiatedMethodType; |
| 21 | 21 | ||
| 22 | public Lambda(String invokedName, MethodDescriptor invokedType, MethodDescriptor samMethodType, ParentedEntry<?> implMethod, MethodDescriptor instantiatedMethodType) { | 22 | public Lambda(String invokedName, MethodDescriptor invokedType, MethodDescriptor samMethodType, ParentedEntry<?> implMethod, MethodDescriptor instantiatedMethodType) { |
| 23 | this.invokedName = invokedName; | 23 | this.invokedName = invokedName; |
| 24 | this.invokedType = invokedType; | 24 | this.invokedType = invokedType; |
| 25 | this.samMethodType = samMethodType; | 25 | this.samMethodType = samMethodType; |
| 26 | this.implMethod = implMethod; | 26 | this.implMethod = implMethod; |
| 27 | this.instantiatedMethodType = instantiatedMethodType; | 27 | this.instantiatedMethodType = instantiatedMethodType; |
| 28 | } | 28 | } |
| 29 | 29 | ||
| 30 | @Override | 30 | @Override |
| 31 | public Lambda translate(Translator translator, EntryResolver resolver, EntryMap<EntryMapping> mappings) { | 31 | public Lambda translate(Translator translator, EntryResolver resolver, EntryMap<EntryMapping> mappings) { |
| 32 | MethodEntry samMethod = new MethodEntry(getInterface(), invokedName, samMethodType); | 32 | MethodEntry samMethod = new MethodEntry(getInterface(), invokedName, samMethodType); |
| 33 | EntryMapping samMethodMapping = resolveMapping(resolver, mappings, samMethod); | 33 | EntryMapping samMethodMapping = resolveMapping(resolver, mappings, samMethod); |
| 34 | 34 | ||
| 35 | return new Lambda( | 35 | return new Lambda( |
| 36 | samMethodMapping != null ? samMethodMapping.getTargetName() : invokedName, | 36 | samMethodMapping != null ? samMethodMapping.getTargetName() : invokedName, |
| 37 | invokedType.translate(translator, resolver, mappings), | 37 | invokedType.translate(translator, resolver, mappings), |
| 38 | samMethodType.translate(translator, resolver, mappings), | 38 | samMethodType.translate(translator, resolver, mappings), |
| 39 | implMethod.translate(translator, resolver, mappings), | 39 | implMethod.translate(translator, resolver, mappings), |
| 40 | instantiatedMethodType.translate(translator, resolver, mappings) | 40 | instantiatedMethodType.translate(translator, resolver, mappings) |
| 41 | ); | 41 | ); |
| 42 | } | 42 | } |
| 43 | 43 | ||
| 44 | private EntryMapping resolveMapping(EntryResolver resolver, EntryMap<EntryMapping> mappings, MethodEntry methodEntry) { | 44 | private EntryMapping resolveMapping(EntryResolver resolver, EntryMap<EntryMapping> mappings, MethodEntry methodEntry) { |
| 45 | for (MethodEntry entry : resolver.resolveEntry(methodEntry, ResolutionStrategy.RESOLVE_ROOT)) { | 45 | for (MethodEntry entry : resolver.resolveEntry(methodEntry, ResolutionStrategy.RESOLVE_ROOT)) { |
| 46 | EntryMapping mapping = mappings.get(entry); | 46 | EntryMapping mapping = mappings.get(entry); |
| 47 | if (mapping != null) { | 47 | if (mapping != null) { |
| 48 | return mapping; | 48 | return mapping; |
| 49 | } | 49 | } |
| 50 | } | 50 | } |
| 51 | return null; | 51 | return null; |
| 52 | } | 52 | } |
| 53 | 53 | ||
| 54 | public ClassEntry getInterface() { | 54 | public ClassEntry getInterface() { |
| 55 | return invokedType.getReturnDesc().getTypeEntry(); | 55 | return invokedType.getReturnDesc().getTypeEntry(); |
| 56 | } | 56 | } |
| 57 | 57 | ||
| 58 | public String getInvokedName() { | 58 | public String getInvokedName() { |
| 59 | return invokedName; | 59 | return invokedName; |
| 60 | } | 60 | } |
| 61 | 61 | ||
| 62 | public MethodDescriptor getInvokedType() { | 62 | public MethodDescriptor getInvokedType() { |
| 63 | return invokedType; | 63 | return invokedType; |
| 64 | } | 64 | } |
| 65 | 65 | ||
| 66 | public MethodDescriptor getSamMethodType() { | 66 | public MethodDescriptor getSamMethodType() { |
| 67 | return samMethodType; | 67 | return samMethodType; |
| 68 | } | 68 | } |
| 69 | 69 | ||
| 70 | public ParentedEntry<?> getImplMethod() { | 70 | public ParentedEntry<?> getImplMethod() { |
| 71 | return implMethod; | 71 | return implMethod; |
| 72 | } | 72 | } |
| 73 | 73 | ||
| 74 | public MethodDescriptor getInstantiatedMethodType() { | 74 | public MethodDescriptor getInstantiatedMethodType() { |
| 75 | return instantiatedMethodType; | 75 | return instantiatedMethodType; |
| 76 | } | 76 | } |
| 77 | 77 | ||
| 78 | @Override | 78 | @Override |
| 79 | public boolean equals(Object o) { | 79 | public boolean equals(Object o) { |
| 80 | if (this == o) return true; | 80 | if (this == o) return true; |
| 81 | if (o == null || getClass() != o.getClass()) return false; | 81 | if (o == null || getClass() != o.getClass()) return false; |
| 82 | Lambda lambda = (Lambda) o; | 82 | Lambda lambda = (Lambda) o; |
| 83 | return Objects.equals(invokedName, lambda.invokedName) && | 83 | return Objects.equals(invokedName, lambda.invokedName) && |
| 84 | Objects.equals(invokedType, lambda.invokedType) && | 84 | Objects.equals(invokedType, lambda.invokedType) && |
| 85 | Objects.equals(samMethodType, lambda.samMethodType) && | 85 | Objects.equals(samMethodType, lambda.samMethodType) && |
| 86 | Objects.equals(implMethod, lambda.implMethod) && | 86 | Objects.equals(implMethod, lambda.implMethod) && |
| 87 | Objects.equals(instantiatedMethodType, lambda.instantiatedMethodType); | 87 | Objects.equals(instantiatedMethodType, lambda.instantiatedMethodType); |
| 88 | } | 88 | } |
| 89 | 89 | ||
| 90 | @Override | 90 | @Override |
| 91 | public int hashCode() { | 91 | public int hashCode() { |
| 92 | return Objects.hash(invokedName, invokedType, samMethodType, implMethod, instantiatedMethodType); | 92 | return Objects.hash(invokedName, invokedType, samMethodType, implMethod, instantiatedMethodType); |
| 93 | } | 93 | } |
| 94 | 94 | ||
| 95 | @Override | 95 | @Override |
| 96 | public String toString() { | 96 | public String toString() { |
| 97 | return "Lambda{" + | 97 | return "Lambda{" + |
| 98 | "invokedName='" + invokedName + '\'' + | 98 | "invokedName='" + invokedName + '\'' + |
| 99 | ", invokedType=" + invokedType + | 99 | ", invokedType=" + invokedType + |
| 100 | ", samMethodType=" + samMethodType + | 100 | ", samMethodType=" + samMethodType + |
| 101 | ", implMethod=" + implMethod + | 101 | ", implMethod=" + implMethod + |
| 102 | ", instantiatedMethodType=" + instantiatedMethodType + | 102 | ", instantiatedMethodType=" + instantiatedMethodType + |
| 103 | '}'; | 103 | '}'; |
| 104 | } | 104 | } |
| 105 | } | 105 | } |
diff --git a/src/main/java/cuchaz/enigma/translation/representation/MethodDescriptor.java b/enigma/src/main/java/cuchaz/enigma/translation/representation/MethodDescriptor.java index 37a7014..03c8686 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/MethodDescriptor.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/representation/MethodDescriptor.java | |||
| @@ -18,10 +18,10 @@ import cuchaz.enigma.translation.mapping.EntryMapping; | |||
| 18 | import cuchaz.enigma.translation.mapping.EntryResolver; | 18 | import cuchaz.enigma.translation.mapping.EntryResolver; |
| 19 | import cuchaz.enigma.translation.mapping.EntryMap; | 19 | import cuchaz.enigma.translation.mapping.EntryMap; |
| 20 | import cuchaz.enigma.translation.representation.entry.ClassEntry; | 20 | import cuchaz.enigma.translation.representation.entry.ClassEntry; |
| 21 | import cuchaz.enigma.utils.Utils; | ||
| 22 | 21 | ||
| 23 | import java.util.ArrayList; | 22 | import java.util.ArrayList; |
| 24 | import java.util.List; | 23 | import java.util.List; |
| 24 | import java.util.Objects; | ||
| 25 | import java.util.function.Function; | 25 | import java.util.function.Function; |
| 26 | 26 | ||
| 27 | public class MethodDescriptor implements Translatable { | 27 | public class MethodDescriptor implements Translatable { |
| @@ -97,7 +97,7 @@ public class MethodDescriptor implements Translatable { | |||
| 97 | 97 | ||
| 98 | @Override | 98 | @Override |
| 99 | public int hashCode() { | 99 | public int hashCode() { |
| 100 | return Utils.combineHashesOrdered(this.argumentDescs.hashCode(), this.returnDesc.hashCode()); | 100 | return Objects.hash(this.argumentDescs.hashCode(), this.returnDesc.hashCode()); |
| 101 | } | 101 | } |
| 102 | 102 | ||
| 103 | public boolean hasClass(ClassEntry classEntry) { | 103 | public boolean hasClass(ClassEntry classEntry) { |
diff --git a/src/main/java/cuchaz/enigma/translation/representation/Signature.java b/enigma/src/main/java/cuchaz/enigma/translation/representation/Signature.java index 424088a..424088a 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/Signature.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/representation/Signature.java | |||
diff --git a/src/main/java/cuchaz/enigma/translation/representation/TypeDescriptor.java b/enigma/src/main/java/cuchaz/enigma/translation/representation/TypeDescriptor.java index f7ba849..f7ba849 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/TypeDescriptor.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/representation/TypeDescriptor.java | |||
diff --git a/src/main/java/cuchaz/enigma/translation/representation/entry/ClassDefEntry.java b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/ClassDefEntry.java index 6930765..6930765 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/entry/ClassDefEntry.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/ClassDefEntry.java | |||
diff --git a/src/main/java/cuchaz/enigma/translation/representation/entry/ClassEntry.java b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/ClassEntry.java index d6171f1..7d4b2ba 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/entry/ClassEntry.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/ClassEntry.java | |||
| @@ -11,7 +11,7 @@ | |||
| 11 | 11 | ||
| 12 | package cuchaz.enigma.translation.representation.entry; | 12 | package cuchaz.enigma.translation.representation.entry; |
| 13 | 13 | ||
| 14 | import cuchaz.enigma.throwables.IllegalNameException; | 14 | import cuchaz.enigma.translation.mapping.IllegalNameException; |
| 15 | import cuchaz.enigma.translation.Translator; | 15 | import cuchaz.enigma.translation.Translator; |
| 16 | import cuchaz.enigma.translation.mapping.EntryMapping; | 16 | import cuchaz.enigma.translation.mapping.EntryMapping; |
| 17 | import cuchaz.enigma.translation.mapping.NameValidator; | 17 | import cuchaz.enigma.translation.mapping.NameValidator; |
diff --git a/src/main/java/cuchaz/enigma/translation/representation/entry/DefEntry.java b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/DefEntry.java index 82536c7..82536c7 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/entry/DefEntry.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/DefEntry.java | |||
diff --git a/src/main/java/cuchaz/enigma/translation/representation/entry/Entry.java b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/Entry.java index 72b0391..40bff31 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/entry/Entry.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/Entry.java | |||
| @@ -11,7 +11,7 @@ | |||
| 11 | 11 | ||
| 12 | package cuchaz.enigma.translation.representation.entry; | 12 | package cuchaz.enigma.translation.representation.entry; |
| 13 | 13 | ||
| 14 | import cuchaz.enigma.throwables.IllegalNameException; | 14 | import cuchaz.enigma.translation.mapping.IllegalNameException; |
| 15 | import cuchaz.enigma.translation.Translatable; | 15 | import cuchaz.enigma.translation.Translatable; |
| 16 | import cuchaz.enigma.translation.mapping.NameValidator; | 16 | import cuchaz.enigma.translation.mapping.NameValidator; |
| 17 | 17 | ||
diff --git a/src/main/java/cuchaz/enigma/translation/representation/entry/FieldDefEntry.java b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/FieldDefEntry.java index f9282b2..f9282b2 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/entry/FieldDefEntry.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/FieldDefEntry.java | |||
diff --git a/src/main/java/cuchaz/enigma/translation/representation/entry/FieldEntry.java b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/FieldEntry.java index bef0edf..0e47878 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/entry/FieldEntry.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/FieldEntry.java | |||
| @@ -15,9 +15,9 @@ import com.google.common.base.Preconditions; | |||
| 15 | import cuchaz.enigma.translation.Translator; | 15 | import cuchaz.enigma.translation.Translator; |
| 16 | import cuchaz.enigma.translation.mapping.EntryMapping; | 16 | import cuchaz.enigma.translation.mapping.EntryMapping; |
| 17 | import cuchaz.enigma.translation.representation.TypeDescriptor; | 17 | import cuchaz.enigma.translation.representation.TypeDescriptor; |
| 18 | import cuchaz.enigma.utils.Utils; | ||
| 19 | 18 | ||
| 20 | import javax.annotation.Nullable; | 19 | import javax.annotation.Nullable; |
| 20 | import java.util.Objects; | ||
| 21 | 21 | ||
| 22 | public class FieldEntry extends ParentedEntry<ClassEntry> implements Comparable<FieldEntry> { | 22 | public class FieldEntry extends ParentedEntry<ClassEntry> implements Comparable<FieldEntry> { |
| 23 | protected final TypeDescriptor desc; | 23 | protected final TypeDescriptor desc; |
| @@ -67,7 +67,7 @@ public class FieldEntry extends ParentedEntry<ClassEntry> implements Comparable< | |||
| 67 | 67 | ||
| 68 | @Override | 68 | @Override |
| 69 | public int hashCode() { | 69 | public int hashCode() { |
| 70 | return Utils.combineHashesOrdered(this.parent, this.name, this.desc); | 70 | return Objects.hash(this.parent, this.name, this.desc); |
| 71 | } | 71 | } |
| 72 | 72 | ||
| 73 | @Override | 73 | @Override |
diff --git a/src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableDefEntry.java b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableDefEntry.java index aad4236..aad4236 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableDefEntry.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableDefEntry.java | |||
diff --git a/src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableEntry.java b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableEntry.java index 3ccb1fa..3f98f03 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableEntry.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/LocalVariableEntry.java | |||
| @@ -3,9 +3,9 @@ package cuchaz.enigma.translation.representation.entry; | |||
| 3 | import com.google.common.base.Preconditions; | 3 | import com.google.common.base.Preconditions; |
| 4 | import cuchaz.enigma.translation.Translator; | 4 | import cuchaz.enigma.translation.Translator; |
| 5 | import cuchaz.enigma.translation.mapping.EntryMapping; | 5 | import cuchaz.enigma.translation.mapping.EntryMapping; |
| 6 | import cuchaz.enigma.utils.Utils; | ||
| 7 | 6 | ||
| 8 | import javax.annotation.Nullable; | 7 | import javax.annotation.Nullable; |
| 8 | import java.util.Objects; | ||
| 9 | 9 | ||
| 10 | /** | 10 | /** |
| 11 | * TypeDescriptor... | 11 | * TypeDescriptor... |
| @@ -64,7 +64,7 @@ public class LocalVariableEntry extends ParentedEntry<MethodEntry> implements Co | |||
| 64 | 64 | ||
| 65 | @Override | 65 | @Override |
| 66 | public int hashCode() { | 66 | public int hashCode() { |
| 67 | return Utils.combineHashesOrdered(this.parent, this.index); | 67 | return Objects.hash(this.parent, this.index); |
| 68 | } | 68 | } |
| 69 | 69 | ||
| 70 | @Override | 70 | @Override |
diff --git a/src/main/java/cuchaz/enigma/translation/representation/entry/MethodDefEntry.java b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/MethodDefEntry.java index 4e75a5c..4e75a5c 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/entry/MethodDefEntry.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/MethodDefEntry.java | |||
diff --git a/src/main/java/cuchaz/enigma/translation/representation/entry/MethodEntry.java b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/MethodEntry.java index e1ffad3..086a5c1 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/entry/MethodEntry.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/MethodEntry.java | |||
| @@ -15,9 +15,9 @@ import com.google.common.base.Preconditions; | |||
| 15 | import cuchaz.enigma.translation.Translator; | 15 | import cuchaz.enigma.translation.Translator; |
| 16 | import cuchaz.enigma.translation.mapping.EntryMapping; | 16 | import cuchaz.enigma.translation.mapping.EntryMapping; |
| 17 | import cuchaz.enigma.translation.representation.MethodDescriptor; | 17 | import cuchaz.enigma.translation.representation.MethodDescriptor; |
| 18 | import cuchaz.enigma.utils.Utils; | ||
| 19 | 18 | ||
| 20 | import javax.annotation.Nullable; | 19 | import javax.annotation.Nullable; |
| 20 | import java.util.Objects; | ||
| 21 | 21 | ||
| 22 | public class MethodEntry extends ParentedEntry<ClassEntry> implements Comparable<MethodEntry> { | 22 | public class MethodEntry extends ParentedEntry<ClassEntry> implements Comparable<MethodEntry> { |
| 23 | 23 | ||
| @@ -72,7 +72,7 @@ public class MethodEntry extends ParentedEntry<ClassEntry> implements Comparable | |||
| 72 | 72 | ||
| 73 | @Override | 73 | @Override |
| 74 | public int hashCode() { | 74 | public int hashCode() { |
| 75 | return Utils.combineHashesOrdered(this.parent, this.name, this.descriptor); | 75 | return Objects.hash(this.parent, this.name, this.descriptor); |
| 76 | } | 76 | } |
| 77 | 77 | ||
| 78 | @Override | 78 | @Override |
diff --git a/src/main/java/cuchaz/enigma/translation/representation/entry/ParentedEntry.java b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/ParentedEntry.java index cbc5faf..95be22c 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/entry/ParentedEntry.java +++ b/enigma/src/main/java/cuchaz/enigma/translation/representation/entry/ParentedEntry.java | |||
| @@ -12,7 +12,6 @@ | |||
| 12 | package cuchaz.enigma.translation.representation.entry; | 12 | package cuchaz.enigma.translation.representation.entry; |
| 13 | 13 | ||
| 14 | import com.google.common.base.Preconditions; | 14 | import com.google.common.base.Preconditions; |
| 15 | import cuchaz.enigma.translation.Translatable; | ||
| 16 | import cuchaz.enigma.translation.Translator; | 15 | import cuchaz.enigma.translation.Translator; |
| 17 | import cuchaz.enigma.translation.mapping.EntryMap; | 16 | import cuchaz.enigma.translation.mapping.EntryMap; |
| 18 | import cuchaz.enigma.translation.mapping.EntryMapping; | 17 | import cuchaz.enigma.translation.mapping.EntryMapping; |
diff --git a/src/main/java/cuchaz/enigma/utils/I18n.java b/enigma/src/main/java/cuchaz/enigma/utils/I18n.java index f91c916..e18532b 100644 --- a/src/main/java/cuchaz/enigma/utils/I18n.java +++ b/enigma/src/main/java/cuchaz/enigma/utils/I18n.java | |||
| @@ -16,8 +16,6 @@ import com.google.common.reflect.ClassPath; | |||
| 16 | import com.google.common.reflect.ClassPath.ResourceInfo; | 16 | import com.google.common.reflect.ClassPath.ResourceInfo; |
| 17 | import com.google.gson.Gson; | 17 | import com.google.gson.Gson; |
| 18 | 18 | ||
| 19 | import cuchaz.enigma.config.Config; | ||
| 20 | |||
| 21 | public class I18n { | 19 | public class I18n { |
| 22 | public static final String DEFAULT_LANGUAGE = "en_us"; | 20 | public static final String DEFAULT_LANGUAGE = "en_us"; |
| 23 | private static final Gson GSON = new Gson(); | 21 | private static final Gson GSON = new Gson(); |
| @@ -26,8 +24,8 @@ public class I18n { | |||
| 26 | private static Map<String, String> languageNames = Maps.newHashMap(); | 24 | private static Map<String, String> languageNames = Maps.newHashMap(); |
| 27 | 25 | ||
| 28 | static { | 26 | static { |
| 29 | translations = load(Config.getInstance().language); | ||
| 30 | defaultTranslations = load(DEFAULT_LANGUAGE); | 27 | defaultTranslations = load(DEFAULT_LANGUAGE); |
| 28 | translations = defaultTranslations; | ||
| 31 | } | 29 | } |
| 32 | 30 | ||
| 33 | @SuppressWarnings("unchecked") | 31 | @SuppressWarnings("unchecked") |
| @@ -61,12 +59,7 @@ public class I18n { | |||
| 61 | } | 59 | } |
| 62 | 60 | ||
| 63 | public static void setLanguage(String language) { | 61 | public static void setLanguage(String language) { |
| 64 | Config.getInstance().language = language; | 62 | translations = load(language); |
| 65 | try { | ||
| 66 | Config.getInstance().saveConfig(); | ||
| 67 | } catch (IOException e) { | ||
| 68 | e.printStackTrace(); | ||
| 69 | } | ||
| 70 | } | 63 | } |
| 71 | 64 | ||
| 72 | public static ArrayList<String> getAvailableLanguages() { | 65 | public static ArrayList<String> getAvailableLanguages() { |
diff --git a/src/main/java/cuchaz/enigma/utils/Pair.java b/enigma/src/main/java/cuchaz/enigma/utils/Pair.java index bf02cef..bf02cef 100644 --- a/src/main/java/cuchaz/enigma/utils/Pair.java +++ b/enigma/src/main/java/cuchaz/enigma/utils/Pair.java | |||
diff --git a/enigma/src/main/java/cuchaz/enigma/utils/Utils.java b/enigma/src/main/java/cuchaz/enigma/utils/Utils.java new file mode 100644 index 0000000..2664099 --- /dev/null +++ b/enigma/src/main/java/cuchaz/enigma/utils/Utils.java | |||
| @@ -0,0 +1,92 @@ | |||
| 1 | /******************************************************************************* | ||
| 2 | * Copyright (c) 2015 Jeff Martin. | ||
| 3 | * All rights reserved. This program and the accompanying materials | ||
| 4 | * are made available under the terms of the GNU Lesser General Public | ||
| 5 | * License v3.0 which accompanies this distribution, and is available at | ||
| 6 | * http://www.gnu.org/licenses/lgpl.html | ||
| 7 | * <p> | ||
| 8 | * Contributors: | ||
| 9 | * Jeff Martin - initial API and implementation | ||
| 10 | ******************************************************************************/ | ||
| 11 | |||
| 12 | package cuchaz.enigma.utils; | ||
| 13 | |||
| 14 | import com.google.common.io.CharStreams; | ||
| 15 | |||
| 16 | import java.io.IOException; | ||
| 17 | import java.io.InputStream; | ||
| 18 | import java.io.InputStreamReader; | ||
| 19 | import java.nio.charset.StandardCharsets; | ||
| 20 | import java.nio.file.Files; | ||
| 21 | import java.nio.file.Path; | ||
| 22 | import java.security.MessageDigest; | ||
| 23 | import java.security.NoSuchAlgorithmException; | ||
| 24 | import java.util.Collections; | ||
| 25 | import java.util.Comparator; | ||
| 26 | import java.util.List; | ||
| 27 | import java.util.Locale; | ||
| 28 | import java.util.stream.Collectors; | ||
| 29 | import java.util.zip.ZipEntry; | ||
| 30 | import java.util.zip.ZipFile; | ||
| 31 | |||
| 32 | public class Utils { | ||
| 33 | public static String readStreamToString(InputStream in) throws IOException { | ||
| 34 | return CharStreams.toString(new InputStreamReader(in, StandardCharsets.UTF_8)); | ||
| 35 | } | ||
| 36 | |||
| 37 | public static String readResourceToString(String path) throws IOException { | ||
| 38 | InputStream in = Utils.class.getResourceAsStream(path); | ||
| 39 | if (in == null) { | ||
| 40 | throw new IllegalArgumentException("Resource not found! " + path); | ||
| 41 | } | ||
| 42 | return readStreamToString(in); | ||
| 43 | } | ||
| 44 | |||
| 45 | public static void delete(Path path) throws IOException { | ||
| 46 | if (Files.exists(path)) { | ||
| 47 | for (Path p : Files.walk(path).sorted(Comparator.reverseOrder()).collect(Collectors.toList())) { | ||
| 48 | Files.delete(p); | ||
| 49 | } | ||
| 50 | } | ||
| 51 | } | ||
| 52 | |||
| 53 | public static byte[] zipSha1(Path path) throws IOException { | ||
| 54 | MessageDigest digest; | ||
| 55 | try { | ||
| 56 | digest = MessageDigest.getInstance("SHA-1"); | ||
| 57 | } catch (NoSuchAlgorithmException e) { | ||
| 58 | // Algorithm guaranteed to be supported | ||
| 59 | throw new RuntimeException(e); | ||
| 60 | } | ||
| 61 | try (ZipFile zip = new ZipFile(path.toFile())) { | ||
| 62 | List<? extends ZipEntry> entries = Collections.list(zip.entries()); | ||
| 63 | // only compare classes (some implementations may not generate directory entries) | ||
| 64 | entries.removeIf(entry -> !entry.getName().toLowerCase(Locale.ROOT).endsWith(".class")); | ||
| 65 | // different implementations may add zip entries in a different order | ||
| 66 | entries.sort(Comparator.comparing(ZipEntry::getName)); | ||
| 67 | byte[] buffer = new byte[8192]; | ||
| 68 | for (ZipEntry entry : entries) { | ||
| 69 | digest.update(entry.getName().getBytes(StandardCharsets.UTF_8)); | ||
| 70 | try (InputStream in = zip.getInputStream(entry)) { | ||
| 71 | int n; | ||
| 72 | while ((n = in.read(buffer)) != -1) { | ||
| 73 | digest.update(buffer, 0, n); | ||
| 74 | } | ||
| 75 | } | ||
| 76 | } | ||
| 77 | } | ||
| 78 | return digest.digest(); | ||
| 79 | } | ||
| 80 | |||
| 81 | public static boolean isBlank(String input) { | ||
| 82 | if (input == null) { | ||
| 83 | return true; | ||
| 84 | } | ||
| 85 | for (int i = 0; i < input.length(); i++) { | ||
| 86 | if (!Character.isWhitespace(input.charAt(i))) { | ||
| 87 | return false; | ||
| 88 | } | ||
| 89 | } | ||
| 90 | return true; | ||
| 91 | } | ||
| 92 | } | ||
diff --git a/src/main/resources/META-INF/services/cuchaz.enigma.api.EnigmaPlugin b/enigma/src/main/resources/META-INF/services/cuchaz.enigma.api.EnigmaPlugin index 136a3e7..136a3e7 100644 --- a/src/main/resources/META-INF/services/cuchaz.enigma.api.EnigmaPlugin +++ b/enigma/src/main/resources/META-INF/services/cuchaz.enigma.api.EnigmaPlugin | |||
diff --git a/src/main/resources/lang/en_us.json b/enigma/src/main/resources/lang/en_us.json index dbf4b93..dbf4b93 100644 --- a/src/main/resources/lang/en_us.json +++ b/enigma/src/main/resources/lang/en_us.json | |||
diff --git a/src/main/resources/lang/fr_fr.json b/enigma/src/main/resources/lang/fr_fr.json index d169b9a..d169b9a 100644 --- a/src/main/resources/lang/fr_fr.json +++ b/enigma/src/main/resources/lang/fr_fr.json | |||
diff --git a/src/main/resources/lang/zh_cn.json b/enigma/src/main/resources/lang/zh_cn.json index f3f503a..f3f503a 100644 --- a/src/main/resources/lang/zh_cn.json +++ b/enigma/src/main/resources/lang/zh_cn.json | |||
diff --git a/src/main/resources/profile.json b/enigma/src/main/resources/profile.json index e1af4cd..e1af4cd 100644 --- a/src/main/resources/profile.json +++ b/enigma/src/main/resources/profile.json | |||
diff --git a/src/test/java/cuchaz/enigma/PackageVisibilityIndexTest.java b/enigma/src/test/java/cuchaz/enigma/PackageVisibilityIndexTest.java index 1dc9748..1dc9748 100644 --- a/src/test/java/cuchaz/enigma/PackageVisibilityIndexTest.java +++ b/enigma/src/test/java/cuchaz/enigma/PackageVisibilityIndexTest.java | |||
diff --git a/src/test/java/cuchaz/enigma/TestDeobfed.java b/enigma/src/test/java/cuchaz/enigma/TestDeobfed.java index d64a745..494d959 100644 --- a/src/test/java/cuchaz/enigma/TestDeobfed.java +++ b/enigma/src/test/java/cuchaz/enigma/TestDeobfed.java | |||
| @@ -13,13 +13,14 @@ package cuchaz.enigma; | |||
| 13 | 13 | ||
| 14 | import cuchaz.enigma.analysis.ClassCache; | 14 | import cuchaz.enigma.analysis.ClassCache; |
| 15 | import cuchaz.enigma.analysis.index.JarIndex; | 15 | import cuchaz.enigma.analysis.index.JarIndex; |
| 16 | import cuchaz.enigma.network.EnigmaServer; | ||
| 17 | import cuchaz.enigma.source.Decompiler; | 16 | import cuchaz.enigma.source.Decompiler; |
| 18 | import cuchaz.enigma.source.Decompilers; | 17 | import cuchaz.enigma.source.Decompilers; |
| 19 | import cuchaz.enigma.source.SourceSettings; | 18 | import cuchaz.enigma.source.SourceSettings; |
| 20 | import org.junit.BeforeClass; | 19 | import org.junit.BeforeClass; |
| 21 | import org.junit.Test; | 20 | import org.junit.Test; |
| 22 | 21 | ||
| 22 | import java.nio.file.Files; | ||
| 23 | import java.nio.file.Path; | ||
| 23 | import java.nio.file.Paths; | 24 | import java.nio.file.Paths; |
| 24 | 25 | ||
| 25 | import static cuchaz.enigma.TestEntryFactory.newClass; | 26 | import static cuchaz.enigma.TestEntryFactory.newClass; |
| @@ -27,7 +28,6 @@ import static org.hamcrest.MatcherAssert.assertThat; | |||
| 27 | import static org.hamcrest.Matchers.containsInAnyOrder; | 28 | import static org.hamcrest.Matchers.containsInAnyOrder; |
| 28 | 29 | ||
| 29 | public class TestDeobfed { | 30 | public class TestDeobfed { |
| 30 | |||
| 31 | private static Enigma enigma; | 31 | private static Enigma enigma; |
| 32 | private static ClassCache classCache; | 32 | private static ClassCache classCache; |
| 33 | private static JarIndex index; | 33 | private static JarIndex index; |
| @@ -36,7 +36,13 @@ public class TestDeobfed { | |||
| 36 | public static void beforeClass() throws Exception { | 36 | public static void beforeClass() throws Exception { |
| 37 | enigma = Enigma.create(); | 37 | enigma = Enigma.create(); |
| 38 | 38 | ||
| 39 | classCache = ClassCache.of(Paths.get("build/test-deobf/translation.jar")); | 39 | Path obf = Paths.get("build/test-obf/translation.jar"); |
| 40 | Path deobf = Paths.get("build/test-deobf/translation.jar"); | ||
| 41 | Files.createDirectories(deobf.getParent()); | ||
| 42 | EnigmaProject project = enigma.openJar(obf, ProgressListener.none()); | ||
| 43 | project.exportRemappedJar(ProgressListener.none()).write(deobf, ProgressListener.none()); | ||
| 44 | |||
| 45 | classCache = ClassCache.of(deobf); | ||
| 40 | index = classCache.index(ProgressListener.none()); | 46 | index = classCache.index(ProgressListener.none()); |
| 41 | } | 47 | } |
| 42 | 48 | ||
| @@ -71,7 +77,7 @@ public class TestDeobfed { | |||
| 71 | 77 | ||
| 72 | @Test | 78 | @Test |
| 73 | public void decompile() { | 79 | public void decompile() { |
| 74 | EnigmaProject project = new EnigmaProject(enigma, classCache, index, new byte[EnigmaServer.CHECKSUM_SIZE]); | 80 | EnigmaProject project = new EnigmaProject(enigma, classCache, index, new byte[20]); |
| 75 | Decompiler decompiler = Decompilers.PROCYON.create(project.getClassCache(), new SourceSettings(false, false)); | 81 | Decompiler decompiler = Decompilers.PROCYON.create(project.getClassCache(), new SourceSettings(false, false)); |
| 76 | 82 | ||
| 77 | decompiler.getSource("a"); | 83 | decompiler.getSource("a"); |
diff --git a/src/test/java/cuchaz/enigma/TestDeobfuscator.java b/enigma/src/test/java/cuchaz/enigma/TestDeobfuscator.java index 6619d26..6619d26 100644 --- a/src/test/java/cuchaz/enigma/TestDeobfuscator.java +++ b/enigma/src/test/java/cuchaz/enigma/TestDeobfuscator.java | |||
diff --git a/src/test/java/cuchaz/enigma/TestEntryFactory.java b/enigma/src/test/java/cuchaz/enigma/TestEntryFactory.java index 9e1425a..9e1425a 100644 --- a/src/test/java/cuchaz/enigma/TestEntryFactory.java +++ b/enigma/src/test/java/cuchaz/enigma/TestEntryFactory.java | |||
diff --git a/src/test/java/cuchaz/enigma/TestInnerClasses.java b/enigma/src/test/java/cuchaz/enigma/TestInnerClasses.java index 85c72f8..85c72f8 100644 --- a/src/test/java/cuchaz/enigma/TestInnerClasses.java +++ b/enigma/src/test/java/cuchaz/enigma/TestInnerClasses.java | |||
diff --git a/src/test/java/cuchaz/enigma/TestJarIndexConstructorReferences.java b/enigma/src/test/java/cuchaz/enigma/TestJarIndexConstructorReferences.java index 48975c8..48975c8 100644 --- a/src/test/java/cuchaz/enigma/TestJarIndexConstructorReferences.java +++ b/enigma/src/test/java/cuchaz/enigma/TestJarIndexConstructorReferences.java | |||
diff --git a/src/test/java/cuchaz/enigma/TestJarIndexInheritanceTree.java b/enigma/src/test/java/cuchaz/enigma/TestJarIndexInheritanceTree.java index 76e379c..76e379c 100644 --- a/src/test/java/cuchaz/enigma/TestJarIndexInheritanceTree.java +++ b/enigma/src/test/java/cuchaz/enigma/TestJarIndexInheritanceTree.java | |||
diff --git a/src/test/java/cuchaz/enigma/TestJarIndexLoneClass.java b/enigma/src/test/java/cuchaz/enigma/TestJarIndexLoneClass.java index 103c366..103c366 100644 --- a/src/test/java/cuchaz/enigma/TestJarIndexLoneClass.java +++ b/enigma/src/test/java/cuchaz/enigma/TestJarIndexLoneClass.java | |||
diff --git a/src/test/java/cuchaz/enigma/TestMethodDescriptor.java b/enigma/src/test/java/cuchaz/enigma/TestMethodDescriptor.java index a73880d..a73880d 100644 --- a/src/test/java/cuchaz/enigma/TestMethodDescriptor.java +++ b/enigma/src/test/java/cuchaz/enigma/TestMethodDescriptor.java | |||
diff --git a/src/test/java/cuchaz/enigma/TestTokensConstructors.java b/enigma/src/test/java/cuchaz/enigma/TestTokensConstructors.java index 0398de4..0398de4 100644 --- a/src/test/java/cuchaz/enigma/TestTokensConstructors.java +++ b/enigma/src/test/java/cuchaz/enigma/TestTokensConstructors.java | |||
diff --git a/src/test/java/cuchaz/enigma/TestTranslator.java b/enigma/src/test/java/cuchaz/enigma/TestTranslator.java index a420afe..a420afe 100644 --- a/src/test/java/cuchaz/enigma/TestTranslator.java +++ b/enigma/src/test/java/cuchaz/enigma/TestTranslator.java | |||
diff --git a/src/test/java/cuchaz/enigma/TestTypeDescriptor.java b/enigma/src/test/java/cuchaz/enigma/TestTypeDescriptor.java index b9ebe55..b9ebe55 100644 --- a/src/test/java/cuchaz/enigma/TestTypeDescriptor.java +++ b/enigma/src/test/java/cuchaz/enigma/TestTypeDescriptor.java | |||
diff --git a/src/test/java/cuchaz/enigma/TokenChecker.java b/enigma/src/test/java/cuchaz/enigma/TokenChecker.java index 48d0c83..96fc6da 100644 --- a/src/test/java/cuchaz/enigma/TokenChecker.java +++ b/enigma/src/test/java/cuchaz/enigma/TokenChecker.java | |||
| @@ -16,7 +16,7 @@ import cuchaz.enigma.analysis.ClassCache; | |||
| 16 | import cuchaz.enigma.analysis.EntryReference; | 16 | import cuchaz.enigma.analysis.EntryReference; |
| 17 | import cuchaz.enigma.source.SourceIndex; | 17 | import cuchaz.enigma.source.SourceIndex; |
| 18 | import cuchaz.enigma.source.*; | 18 | import cuchaz.enigma.source.*; |
| 19 | import cuchaz.enigma.analysis.Token; | 19 | import cuchaz.enigma.source.Token; |
| 20 | import cuchaz.enigma.translation.representation.entry.Entry; | 20 | import cuchaz.enigma.translation.representation.entry.Entry; |
| 21 | 21 | ||
| 22 | import java.io.IOException; | 22 | import java.io.IOException; |
diff --git a/src/test/java/cuchaz/enigma/inputs/Keep.java b/enigma/src/test/java/cuchaz/enigma/inputs/Keep.java index 4dbe8e2..4dbe8e2 100644 --- a/src/test/java/cuchaz/enigma/inputs/Keep.java +++ b/enigma/src/test/java/cuchaz/enigma/inputs/Keep.java | |||
diff --git a/src/test/java/cuchaz/enigma/inputs/constructors/BaseClass.java b/enigma/src/test/java/cuchaz/enigma/inputs/constructors/BaseClass.java index f07e1f8..f07e1f8 100644 --- a/src/test/java/cuchaz/enigma/inputs/constructors/BaseClass.java +++ b/enigma/src/test/java/cuchaz/enigma/inputs/constructors/BaseClass.java | |||
diff --git a/src/test/java/cuchaz/enigma/inputs/constructors/Caller.java b/enigma/src/test/java/cuchaz/enigma/inputs/constructors/Caller.java index 71439fd..71439fd 100644 --- a/src/test/java/cuchaz/enigma/inputs/constructors/Caller.java +++ b/enigma/src/test/java/cuchaz/enigma/inputs/constructors/Caller.java | |||
diff --git a/src/test/java/cuchaz/enigma/inputs/constructors/DefaultConstructable.java b/enigma/src/test/java/cuchaz/enigma/inputs/constructors/DefaultConstructable.java index c3d4170..c3d4170 100644 --- a/src/test/java/cuchaz/enigma/inputs/constructors/DefaultConstructable.java +++ b/enigma/src/test/java/cuchaz/enigma/inputs/constructors/DefaultConstructable.java | |||
diff --git a/src/test/java/cuchaz/enigma/inputs/constructors/SubClass.java b/enigma/src/test/java/cuchaz/enigma/inputs/constructors/SubClass.java index bc56b3b..bc56b3b 100644 --- a/src/test/java/cuchaz/enigma/inputs/constructors/SubClass.java +++ b/enigma/src/test/java/cuchaz/enigma/inputs/constructors/SubClass.java | |||
diff --git a/src/test/java/cuchaz/enigma/inputs/constructors/SubSubClass.java b/enigma/src/test/java/cuchaz/enigma/inputs/constructors/SubSubClass.java index 87b69d3..87b69d3 100644 --- a/src/test/java/cuchaz/enigma/inputs/constructors/SubSubClass.java +++ b/enigma/src/test/java/cuchaz/enigma/inputs/constructors/SubSubClass.java | |||
diff --git a/src/test/java/cuchaz/enigma/inputs/inheritanceTree/BaseClass.java b/enigma/src/test/java/cuchaz/enigma/inputs/inheritanceTree/BaseClass.java index b9c4929..b9c4929 100644 --- a/src/test/java/cuchaz/enigma/inputs/inheritanceTree/BaseClass.java +++ b/enigma/src/test/java/cuchaz/enigma/inputs/inheritanceTree/BaseClass.java | |||
diff --git a/src/test/java/cuchaz/enigma/inputs/inheritanceTree/SubclassA.java b/enigma/src/test/java/cuchaz/enigma/inputs/inheritanceTree/SubclassA.java index 50e963c..50e963c 100644 --- a/src/test/java/cuchaz/enigma/inputs/inheritanceTree/SubclassA.java +++ b/enigma/src/test/java/cuchaz/enigma/inputs/inheritanceTree/SubclassA.java | |||
diff --git a/src/test/java/cuchaz/enigma/inputs/inheritanceTree/SubclassB.java b/enigma/src/test/java/cuchaz/enigma/inputs/inheritanceTree/SubclassB.java index d0dd664..d0dd664 100644 --- a/src/test/java/cuchaz/enigma/inputs/inheritanceTree/SubclassB.java +++ b/enigma/src/test/java/cuchaz/enigma/inputs/inheritanceTree/SubclassB.java | |||
diff --git a/src/test/java/cuchaz/enigma/inputs/inheritanceTree/SubsubclassAA.java b/enigma/src/test/java/cuchaz/enigma/inputs/inheritanceTree/SubsubclassAA.java index c584570..c584570 100644 --- a/src/test/java/cuchaz/enigma/inputs/inheritanceTree/SubsubclassAA.java +++ b/enigma/src/test/java/cuchaz/enigma/inputs/inheritanceTree/SubsubclassAA.java | |||
diff --git a/src/test/java/cuchaz/enigma/inputs/innerClasses/A_Anonymous.java b/enigma/src/test/java/cuchaz/enigma/inputs/innerClasses/A_Anonymous.java index f652d87..f652d87 100644 --- a/src/test/java/cuchaz/enigma/inputs/innerClasses/A_Anonymous.java +++ b/enigma/src/test/java/cuchaz/enigma/inputs/innerClasses/A_Anonymous.java | |||
diff --git a/src/test/java/cuchaz/enigma/inputs/innerClasses/B_AnonymousWithScopeArgs.java b/enigma/src/test/java/cuchaz/enigma/inputs/innerClasses/B_AnonymousWithScopeArgs.java index d1b7601..d1b7601 100644 --- a/src/test/java/cuchaz/enigma/inputs/innerClasses/B_AnonymousWithScopeArgs.java +++ b/enigma/src/test/java/cuchaz/enigma/inputs/innerClasses/B_AnonymousWithScopeArgs.java | |||
diff --git a/src/test/java/cuchaz/enigma/inputs/innerClasses/C_ConstructorArgs.java b/enigma/src/test/java/cuchaz/enigma/inputs/innerClasses/C_ConstructorArgs.java index 94061fa..94061fa 100644 --- a/src/test/java/cuchaz/enigma/inputs/innerClasses/C_ConstructorArgs.java +++ b/enigma/src/test/java/cuchaz/enigma/inputs/innerClasses/C_ConstructorArgs.java | |||
diff --git a/src/test/java/cuchaz/enigma/inputs/innerClasses/D_Simple.java b/enigma/src/test/java/cuchaz/enigma/inputs/innerClasses/D_Simple.java index 71b3a6d..71b3a6d 100644 --- a/src/test/java/cuchaz/enigma/inputs/innerClasses/D_Simple.java +++ b/enigma/src/test/java/cuchaz/enigma/inputs/innerClasses/D_Simple.java | |||
diff --git a/src/test/java/cuchaz/enigma/inputs/innerClasses/E_AnonymousWithOuterAccess.java b/enigma/src/test/java/cuchaz/enigma/inputs/innerClasses/E_AnonymousWithOuterAccess.java index 976ec42..976ec42 100644 --- a/src/test/java/cuchaz/enigma/inputs/innerClasses/E_AnonymousWithOuterAccess.java +++ b/enigma/src/test/java/cuchaz/enigma/inputs/innerClasses/E_AnonymousWithOuterAccess.java | |||
diff --git a/src/test/java/cuchaz/enigma/inputs/innerClasses/F_ClassTree.java b/enigma/src/test/java/cuchaz/enigma/inputs/innerClasses/F_ClassTree.java index b1de3c9..b1de3c9 100644 --- a/src/test/java/cuchaz/enigma/inputs/innerClasses/F_ClassTree.java +++ b/enigma/src/test/java/cuchaz/enigma/inputs/innerClasses/F_ClassTree.java | |||
diff --git a/src/test/java/cuchaz/enigma/inputs/loneClass/LoneClass.java b/enigma/src/test/java/cuchaz/enigma/inputs/loneClass/LoneClass.java index ddc4e31..ddc4e31 100644 --- a/src/test/java/cuchaz/enigma/inputs/loneClass/LoneClass.java +++ b/enigma/src/test/java/cuchaz/enigma/inputs/loneClass/LoneClass.java | |||
diff --git a/src/test/java/cuchaz/enigma/inputs/packageAccess/Base.java b/enigma/src/test/java/cuchaz/enigma/inputs/packageAccess/Base.java index 6f5fe30..6f5fe30 100644 --- a/src/test/java/cuchaz/enigma/inputs/packageAccess/Base.java +++ b/enigma/src/test/java/cuchaz/enigma/inputs/packageAccess/Base.java | |||
diff --git a/src/test/java/cuchaz/enigma/inputs/packageAccess/SamePackageChild.java b/enigma/src/test/java/cuchaz/enigma/inputs/packageAccess/SamePackageChild.java index cf0f657..cf0f657 100644 --- a/src/test/java/cuchaz/enigma/inputs/packageAccess/SamePackageChild.java +++ b/enigma/src/test/java/cuchaz/enigma/inputs/packageAccess/SamePackageChild.java | |||
diff --git a/src/test/java/cuchaz/enigma/inputs/packageAccess/sub/OtherPackageChild.java b/enigma/src/test/java/cuchaz/enigma/inputs/packageAccess/sub/OtherPackageChild.java index 19fb19c..19fb19c 100644 --- a/src/test/java/cuchaz/enigma/inputs/packageAccess/sub/OtherPackageChild.java +++ b/enigma/src/test/java/cuchaz/enigma/inputs/packageAccess/sub/OtherPackageChild.java | |||
diff --git a/src/test/java/cuchaz/enigma/inputs/translation/A_Basic.java b/enigma/src/test/java/cuchaz/enigma/inputs/translation/A_Basic.java index 26f3718..26f3718 100644 --- a/src/test/java/cuchaz/enigma/inputs/translation/A_Basic.java +++ b/enigma/src/test/java/cuchaz/enigma/inputs/translation/A_Basic.java | |||
diff --git a/src/test/java/cuchaz/enigma/inputs/translation/B_BaseClass.java b/enigma/src/test/java/cuchaz/enigma/inputs/translation/B_BaseClass.java index fd7f6e7..fd7f6e7 100644 --- a/src/test/java/cuchaz/enigma/inputs/translation/B_BaseClass.java +++ b/enigma/src/test/java/cuchaz/enigma/inputs/translation/B_BaseClass.java | |||
diff --git a/src/test/java/cuchaz/enigma/inputs/translation/C_SubClass.java b/enigma/src/test/java/cuchaz/enigma/inputs/translation/C_SubClass.java index 9d74e44..9d74e44 100644 --- a/src/test/java/cuchaz/enigma/inputs/translation/C_SubClass.java +++ b/enigma/src/test/java/cuchaz/enigma/inputs/translation/C_SubClass.java | |||
diff --git a/src/test/java/cuchaz/enigma/inputs/translation/D_AnonymousTesting.java b/enigma/src/test/java/cuchaz/enigma/inputs/translation/D_AnonymousTesting.java index 99c83bb..99c83bb 100644 --- a/src/test/java/cuchaz/enigma/inputs/translation/D_AnonymousTesting.java +++ b/enigma/src/test/java/cuchaz/enigma/inputs/translation/D_AnonymousTesting.java | |||
diff --git a/src/test/java/cuchaz/enigma/inputs/translation/E_Bridges.java b/enigma/src/test/java/cuchaz/enigma/inputs/translation/E_Bridges.java index 0b8cf2a..0b8cf2a 100644 --- a/src/test/java/cuchaz/enigma/inputs/translation/E_Bridges.java +++ b/enigma/src/test/java/cuchaz/enigma/inputs/translation/E_Bridges.java | |||
diff --git a/src/test/java/cuchaz/enigma/inputs/translation/F_ObjectMethods.java b/enigma/src/test/java/cuchaz/enigma/inputs/translation/F_ObjectMethods.java index 8a92792..8a92792 100644 --- a/src/test/java/cuchaz/enigma/inputs/translation/F_ObjectMethods.java +++ b/enigma/src/test/java/cuchaz/enigma/inputs/translation/F_ObjectMethods.java | |||
diff --git a/src/test/java/cuchaz/enigma/inputs/translation/G_OuterClass.java b/enigma/src/test/java/cuchaz/enigma/inputs/translation/G_OuterClass.java index a1e6a85..a1e6a85 100644 --- a/src/test/java/cuchaz/enigma/inputs/translation/G_OuterClass.java +++ b/enigma/src/test/java/cuchaz/enigma/inputs/translation/G_OuterClass.java | |||
diff --git a/src/test/java/cuchaz/enigma/inputs/translation/H_NamelessClass.java b/enigma/src/test/java/cuchaz/enigma/inputs/translation/H_NamelessClass.java index 013c55a..013c55a 100644 --- a/src/test/java/cuchaz/enigma/inputs/translation/H_NamelessClass.java +++ b/enigma/src/test/java/cuchaz/enigma/inputs/translation/H_NamelessClass.java | |||
diff --git a/src/test/java/cuchaz/enigma/inputs/translation/I_Generics.java b/enigma/src/test/java/cuchaz/enigma/inputs/translation/I_Generics.java index fd2ebdd..fd2ebdd 100644 --- a/src/test/java/cuchaz/enigma/inputs/translation/I_Generics.java +++ b/enigma/src/test/java/cuchaz/enigma/inputs/translation/I_Generics.java | |||
diff --git a/src/test/java/cuchaz/enigma/mapping/TestComments.java b/enigma/src/test/java/cuchaz/enigma/translation/mapping/TestComments.java index b3a6005..e831943 100644 --- a/src/test/java/cuchaz/enigma/mapping/TestComments.java +++ b/enigma/src/test/java/cuchaz/enigma/translation/mapping/TestComments.java | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | package cuchaz.enigma.mapping; | 1 | package cuchaz.enigma.translation.mapping; |
| 2 | 2 | ||
| 3 | import java.io.IOException; | 3 | import java.io.IOException; |
| 4 | import java.net.URISyntaxException; | 4 | import java.net.URISyntaxException; |
| @@ -6,12 +6,11 @@ import java.nio.file.Path; | |||
| 6 | import java.nio.file.Paths; | 6 | import java.nio.file.Paths; |
| 7 | 7 | ||
| 8 | import cuchaz.enigma.ProgressListener; | 8 | import cuchaz.enigma.ProgressListener; |
| 9 | import cuchaz.enigma.throwables.MappingParseException; | 9 | import cuchaz.enigma.translation.mapping.serde.MappingFileNameFormat; |
| 10 | import cuchaz.enigma.translation.mapping.EntryMapping; | 10 | import cuchaz.enigma.translation.mapping.serde.MappingParseException; |
| 11 | import cuchaz.enigma.translation.mapping.MappingFileNameFormat; | 11 | import cuchaz.enigma.translation.mapping.serde.MappingSaveParameters; |
| 12 | import cuchaz.enigma.translation.mapping.MappingSaveParameters; | 12 | import cuchaz.enigma.translation.mapping.serde.enigma.EnigmaMappingsReader; |
| 13 | import cuchaz.enigma.translation.mapping.serde.EnigmaMappingsReader; | 13 | import cuchaz.enigma.translation.mapping.serde.tinyv2.TinyV2Writer; |
| 14 | import cuchaz.enigma.translation.mapping.serde.TinyV2Writer; | ||
| 15 | import cuchaz.enigma.translation.mapping.tree.EntryTree; | 14 | import cuchaz.enigma.translation.mapping.tree.EntryTree; |
| 16 | import org.junit.Test; | 15 | import org.junit.Test; |
| 17 | 16 | ||
diff --git a/src/test/java/cuchaz/enigma/mapping/TestTinyV2InnerClasses.java b/enigma/src/test/java/cuchaz/enigma/translation/mapping/TestTinyV2InnerClasses.java index 7cfdaca..65941e5 100644 --- a/src/test/java/cuchaz/enigma/mapping/TestTinyV2InnerClasses.java +++ b/enigma/src/test/java/cuchaz/enigma/translation/mapping/TestTinyV2InnerClasses.java | |||
| @@ -9,20 +9,16 @@ | |||
| 9 | * Jeff Martin - initial API and implementation | 9 | * Jeff Martin - initial API and implementation |
| 10 | ******************************************************************************/ | 10 | ******************************************************************************/ |
| 11 | 11 | ||
| 12 | package cuchaz.enigma.mapping; | 12 | package cuchaz.enigma.translation.mapping; |
| 13 | 13 | ||
| 14 | import cuchaz.enigma.Enigma; | 14 | import cuchaz.enigma.Enigma; |
| 15 | import cuchaz.enigma.EnigmaProject; | 15 | import cuchaz.enigma.EnigmaProject; |
| 16 | import cuchaz.enigma.ProgressListener; | 16 | import cuchaz.enigma.ProgressListener; |
| 17 | import cuchaz.enigma.translation.mapping.serde.EnigmaMappingsReader; | 17 | import cuchaz.enigma.translation.mapping.serde.enigma.EnigmaMappingsReader; |
| 18 | import cuchaz.enigma.translation.representation.entry.ClassEntry; | ||
| 19 | import org.junit.Test; | ||
| 20 | 18 | ||
| 21 | import java.nio.file.Path; | 19 | import java.nio.file.Path; |
| 22 | import java.nio.file.Paths; | 20 | import java.nio.file.Paths; |
| 23 | 21 | ||
| 24 | import static cuchaz.enigma.TestEntryFactory.newClass; | ||
| 25 | |||
| 26 | public final class TestTinyV2InnerClasses { | 22 | public final class TestTinyV2InnerClasses { |
| 27 | private Path jar; | 23 | private Path jar; |
| 28 | private Path mappings; | 24 | private Path mappings; |
diff --git a/src/test/java/cuchaz/enigma/mapping/TestV2Main.java b/enigma/src/test/java/cuchaz/enigma/translation/mapping/TestV2Main.java index 021a90c..6e4d7b9 100644 --- a/src/test/java/cuchaz/enigma/mapping/TestV2Main.java +++ b/enigma/src/test/java/cuchaz/enigma/translation/mapping/TestV2Main.java | |||
| @@ -1,11 +1,10 @@ | |||
| 1 | package cuchaz.enigma.mapping; | 1 | package cuchaz.enigma.translation.mapping; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.ProgressListener; | 3 | import cuchaz.enigma.ProgressListener; |
| 4 | import cuchaz.enigma.translation.mapping.EntryMapping; | 4 | import cuchaz.enigma.translation.mapping.serde.MappingFileNameFormat; |
| 5 | import cuchaz.enigma.translation.mapping.MappingFileNameFormat; | 5 | import cuchaz.enigma.translation.mapping.serde.MappingSaveParameters; |
| 6 | import cuchaz.enigma.translation.mapping.MappingSaveParameters; | 6 | import cuchaz.enigma.translation.mapping.serde.enigma.EnigmaMappingsReader; |
| 7 | import cuchaz.enigma.translation.mapping.serde.EnigmaMappingsReader; | 7 | import cuchaz.enigma.translation.mapping.serde.tinyv2.TinyV2Writer; |
| 8 | import cuchaz.enigma.translation.mapping.serde.TinyV2Writer; | ||
| 9 | import cuchaz.enigma.translation.mapping.tree.EntryTree; | 8 | import cuchaz.enigma.translation.mapping.tree.EntryTree; |
| 10 | 9 | ||
| 11 | import java.nio.file.Path; | 10 | import java.nio.file.Path; |
diff --git a/src/test/resources/comments/test.mapping b/enigma/src/test/resources/comments/test.mapping index d134558..d134558 100644 --- a/src/test/resources/comments/test.mapping +++ b/enigma/src/test/resources/comments/test.mapping | |||
diff --git a/src/test/resources/proguard-build.conf b/enigma/src/test/resources/proguard-build.conf index ba3575a..691d8a2 100644 --- a/src/test/resources/proguard-build.conf +++ b/enigma/src/test/resources/proguard-build.conf | |||
| @@ -2,5 +2,5 @@ | |||
| 2 | -dontobfuscate | 2 | -dontobfuscate |
| 3 | -dontwarn | 3 | -dontwarn |
| 4 | -keep class cuchaz.enigma.Main { static void main(java.lang.String[]); } | 4 | -keep class cuchaz.enigma.Main { static void main(java.lang.String[]); } |
| 5 | -keep class cuchaz.enigma.CommandMain { static void main(java.lang.String[]); } | 5 | -keep class cuchaz.enigma.command.Main { static void main(java.lang.String[]); } |
| 6 | -keep class de.sciss.syntaxpane.** { *; } | 6 | -keep class de.sciss.syntaxpane.** { *; } |
diff --git a/src/test/resources/proguard-test.conf b/enigma/src/test/resources/proguard-test.conf index 9411d26..9411d26 100644 --- a/src/test/resources/proguard-test.conf +++ b/enigma/src/test/resources/proguard-test.conf | |||
diff --git a/src/test/resources/tinyV2InnerClasses/c.mapping b/enigma/src/test/resources/tinyV2InnerClasses/c.mapping index f9b0442..f9b0442 100644 --- a/src/test/resources/tinyV2InnerClasses/c.mapping +++ b/enigma/src/test/resources/tinyV2InnerClasses/c.mapping | |||
diff --git a/src/test/resources/tinyV2InnerClasses/cuchaz/enigma/Dad.mapping b/enigma/src/test/resources/tinyV2InnerClasses/cuchaz/enigma/Dad.mapping index 8d43ba9..8d43ba9 100644 --- a/src/test/resources/tinyV2InnerClasses/cuchaz/enigma/Dad.mapping +++ b/enigma/src/test/resources/tinyV2InnerClasses/cuchaz/enigma/Dad.mapping | |||
diff --git a/src/test/java/cuchaz/enigma/resources/translation.mappings b/enigma/src/test/resources/translation.mappings index c08765c..c08765c 100644 --- a/src/test/java/cuchaz/enigma/resources/translation.mappings +++ b/enigma/src/test/resources/translation.mappings | |||
diff --git a/settings.gradle b/settings.gradle index 8fa1712..8754027 100644 --- a/settings.gradle +++ b/settings.gradle | |||
| @@ -1 +1,4 @@ | |||
| 1 | rootProject.name = 'enigma' \ No newline at end of file | 1 | include 'enigma' |
| 2 | include 'enigma-swing' | ||
| 3 | include 'enigma-server' | ||
| 4 | include 'enigma-cli' | ||
diff --git a/src/main/java/cuchaz/enigma/Constants.java b/src/main/java/cuchaz/enigma/Constants.java deleted file mode 100644 index 577315f..0000000 --- a/src/main/java/cuchaz/enigma/Constants.java +++ /dev/null | |||
| @@ -1,20 +0,0 @@ | |||
| 1 | /******************************************************************************* | ||
| 2 | * Copyright (c) 2015 Jeff Martin. | ||
| 3 | * All rights reserved. This program and the accompanying materials | ||
| 4 | * are made available under the terms of the GNU Lesser General Public | ||
| 5 | * License v3.0 which accompanies this distribution, and is available at | ||
| 6 | * http://www.gnu.org/licenses/lgpl.html | ||
| 7 | * <p> | ||
| 8 | * Contributors: | ||
| 9 | * Jeff Martin - initial API and implementation | ||
| 10 | ******************************************************************************/ | ||
| 11 | |||
| 12 | package cuchaz.enigma; | ||
| 13 | |||
| 14 | public class Constants { | ||
| 15 | public static final String NAME = "Enigma"; | ||
| 16 | public static final String VERSION = "@VERSION@/Fabric"; | ||
| 17 | public static final String URL = "https://fabricmc.net"; | ||
| 18 | public static final int MiB = 1024 * 1024; // 1 mebibyte | ||
| 19 | public static final int KiB = 1024; // 1 kebibyte | ||
| 20 | } | ||
diff --git a/src/main/java/cuchaz/enigma/command/MappingCommandsUtil.java b/src/main/java/cuchaz/enigma/command/MappingCommandsUtil.java deleted file mode 100644 index fc7afbc..0000000 --- a/src/main/java/cuchaz/enigma/command/MappingCommandsUtil.java +++ /dev/null | |||
| @@ -1,148 +0,0 @@ | |||
| 1 | package cuchaz.enigma.command; | ||
| 2 | |||
| 3 | import cuchaz.enigma.ProgressListener; | ||
| 4 | import cuchaz.enigma.throwables.MappingParseException; | ||
| 5 | import cuchaz.enigma.translation.MappingTranslator; | ||
| 6 | import cuchaz.enigma.translation.Translator; | ||
| 7 | import cuchaz.enigma.translation.mapping.EntryMapping; | ||
| 8 | import cuchaz.enigma.translation.mapping.MappingSaveParameters; | ||
| 9 | import cuchaz.enigma.translation.mapping.VoidEntryResolver; | ||
| 10 | import cuchaz.enigma.translation.mapping.serde.*; | ||
| 11 | import cuchaz.enigma.translation.mapping.tree.EntryTree; | ||
| 12 | import cuchaz.enigma.translation.mapping.tree.EntryTreeNode; | ||
| 13 | import cuchaz.enigma.translation.mapping.tree.HashEntryTree; | ||
| 14 | import cuchaz.enigma.translation.representation.entry.ClassEntry; | ||
| 15 | import cuchaz.enigma.translation.representation.entry.Entry; | ||
| 16 | import cuchaz.enigma.translation.representation.entry.FieldEntry; | ||
| 17 | import cuchaz.enigma.translation.representation.entry.MethodEntry; | ||
| 18 | |||
| 19 | import java.io.IOException; | ||
| 20 | import java.nio.file.Files; | ||
| 21 | import java.nio.file.Path; | ||
| 22 | import java.util.HashSet; | ||
| 23 | import java.util.Set; | ||
| 24 | |||
| 25 | public final class MappingCommandsUtil { | ||
| 26 | private MappingCommandsUtil() {} | ||
| 27 | |||
| 28 | public static EntryTree<EntryMapping> invert(EntryTree<EntryMapping> mappings) { | ||
| 29 | Translator translator = new MappingTranslator(mappings, VoidEntryResolver.INSTANCE); | ||
| 30 | EntryTree<EntryMapping> result = new HashEntryTree<>(); | ||
| 31 | |||
| 32 | for (EntryTreeNode<EntryMapping> node : mappings) { | ||
| 33 | Entry<?> leftEntry = node.getEntry(); | ||
| 34 | EntryMapping leftMapping = node.getValue(); | ||
| 35 | |||
| 36 | if (!(leftEntry instanceof ClassEntry || leftEntry instanceof MethodEntry || leftEntry instanceof FieldEntry)) { | ||
| 37 | result.insert(translator.translate(leftEntry), leftMapping); | ||
| 38 | continue; | ||
| 39 | } | ||
| 40 | |||
| 41 | Entry<?> rightEntry = translator.translate(leftEntry); | ||
| 42 | |||
| 43 | result.insert(rightEntry, leftMapping == null ? null : new EntryMapping(leftEntry.getName())); // TODO: leftMapping.withName once javadoc PR is merged | ||
| 44 | } | ||
| 45 | |||
| 46 | return result; | ||
| 47 | } | ||
| 48 | |||
| 49 | public static EntryTree<EntryMapping> compose(EntryTree<EntryMapping> left, EntryTree<EntryMapping> right, boolean keepLeftOnly, boolean keepRightOnly) { | ||
| 50 | Translator leftTranslator = new MappingTranslator(left, VoidEntryResolver.INSTANCE); | ||
| 51 | EntryTree<EntryMapping> result = new HashEntryTree<>(); | ||
| 52 | Set<Entry<?>> addedMappings = new HashSet<>(); | ||
| 53 | |||
| 54 | for (EntryTreeNode<EntryMapping> node : left) { | ||
| 55 | Entry<?> leftEntry = node.getEntry(); | ||
| 56 | EntryMapping leftMapping = node.getValue(); | ||
| 57 | |||
| 58 | Entry<?> rightEntry = leftTranslator.translate(leftEntry); | ||
| 59 | |||
| 60 | EntryMapping rightMapping = right.get(rightEntry); | ||
| 61 | if (rightMapping != null) { | ||
| 62 | result.insert(leftEntry, rightMapping); | ||
| 63 | addedMappings.add(rightEntry); | ||
| 64 | } else if (keepLeftOnly) { | ||
| 65 | result.insert(leftEntry, leftMapping); | ||
| 66 | } | ||
| 67 | } | ||
| 68 | |||
| 69 | if (keepRightOnly) { | ||
| 70 | Translator leftInverseTranslator = new MappingTranslator(invert(left), VoidEntryResolver.INSTANCE); | ||
| 71 | for (EntryTreeNode<EntryMapping> node : right) { | ||
| 72 | Entry<?> rightEntry = node.getEntry(); | ||
| 73 | EntryMapping rightMapping = node.getValue(); | ||
| 74 | |||
| 75 | if (!addedMappings.contains(rightEntry)) { | ||
| 76 | result.insert(leftInverseTranslator.translate(rightEntry), rightMapping); | ||
| 77 | } | ||
| 78 | } | ||
| 79 | } | ||
| 80 | return result; | ||
| 81 | } | ||
| 82 | |||
| 83 | public static EntryTree<EntryMapping> read(String type, Path path, MappingSaveParameters saveParameters) throws MappingParseException, IOException { | ||
| 84 | if (type.equals("enigma")) { | ||
| 85 | return (Files.isDirectory(path) ? EnigmaMappingsReader.DIRECTORY : EnigmaMappingsReader.ZIP).read(path, ProgressListener.none(), saveParameters); | ||
| 86 | } | ||
| 87 | |||
| 88 | if (type.equals("tiny")) { | ||
| 89 | return TinyMappingsReader.INSTANCE.read(path, ProgressListener.none(), saveParameters); | ||
| 90 | } | ||
| 91 | |||
| 92 | MappingFormat format = null; | ||
| 93 | try { | ||
| 94 | format = MappingFormat.valueOf(type.toUpperCase()); | ||
| 95 | } catch (IllegalArgumentException ignored) { | ||
| 96 | if (type.equals("tinyv2")) { | ||
| 97 | format = MappingFormat.TINY_V2; | ||
| 98 | } | ||
| 99 | } | ||
| 100 | |||
| 101 | if (format != null) { | ||
| 102 | return format.getReader().read(path, ProgressListener.none(), saveParameters); | ||
| 103 | } | ||
| 104 | |||
| 105 | throw new IllegalArgumentException("no reader for " + type); | ||
| 106 | } | ||
| 107 | |||
| 108 | public static void write(EntryTree<EntryMapping> mappings, String type, Path path, MappingSaveParameters saveParameters) { | ||
| 109 | if (type.equals("enigma")) { | ||
| 110 | EnigmaMappingsWriter.DIRECTORY.write(mappings, path, ProgressListener.none(), saveParameters); | ||
| 111 | return; | ||
| 112 | } | ||
| 113 | |||
| 114 | if (type.startsWith("tinyv2:") || type.startsWith("tiny_v2:")) { | ||
| 115 | String[] split = type.split(":"); | ||
| 116 | |||
| 117 | if (split.length != 3) { | ||
| 118 | throw new IllegalArgumentException("specify column names as 'tinyv2:from_namespace:to_namespace'"); | ||
| 119 | } | ||
| 120 | |||
| 121 | new TinyV2Writer(split[1], split[2]).write(mappings, path, ProgressListener.none(), saveParameters); | ||
| 122 | return; | ||
| 123 | } | ||
| 124 | |||
| 125 | if (type.startsWith("tiny:")) { | ||
| 126 | String[] split = type.split(":"); | ||
| 127 | |||
| 128 | if (split.length != 3) { | ||
| 129 | throw new IllegalArgumentException("specify column names as 'tiny:from_column:to_column'"); | ||
| 130 | } | ||
| 131 | |||
| 132 | new TinyMappingsWriter(split[1], split[2]).write(mappings, path, ProgressListener.none(), saveParameters); | ||
| 133 | return; | ||
| 134 | } | ||
| 135 | |||
| 136 | MappingFormat format = null; | ||
| 137 | try { | ||
| 138 | format = MappingFormat.valueOf(type.toUpperCase()); | ||
| 139 | } catch (IllegalArgumentException ignored) {} | ||
| 140 | |||
| 141 | if (format != null) { | ||
| 142 | format.getWriter().write(mappings, path, ProgressListener.none(), saveParameters); | ||
| 143 | return; | ||
| 144 | } | ||
| 145 | |||
| 146 | throw new IllegalArgumentException("no writer for " + type); | ||
| 147 | } | ||
| 148 | } | ||
diff --git a/src/main/java/cuchaz/enigma/throwables/MappingConflict.java b/src/main/java/cuchaz/enigma/throwables/MappingConflict.java deleted file mode 100644 index 95cd449..0000000 --- a/src/main/java/cuchaz/enigma/throwables/MappingConflict.java +++ /dev/null | |||
| @@ -1,7 +0,0 @@ | |||
| 1 | package cuchaz.enigma.throwables; | ||
| 2 | |||
| 3 | public class MappingConflict extends Exception { | ||
| 4 | public MappingConflict(String clazz, String name, String nameExisting) { | ||
| 5 | super(String.format("Conflicting mappings found for %s. The mapping file is %s and the second is %s", clazz, name, nameExisting)); | ||
| 6 | } | ||
| 7 | } | ||
diff --git a/src/main/java/cuchaz/enigma/utils/LFPrintWriter.java b/src/main/java/cuchaz/enigma/utils/LFPrintWriter.java deleted file mode 100644 index c12e913..0000000 --- a/src/main/java/cuchaz/enigma/utils/LFPrintWriter.java +++ /dev/null | |||
| @@ -1,16 +0,0 @@ | |||
| 1 | package cuchaz.enigma.utils; | ||
| 2 | |||
| 3 | import java.io.PrintWriter; | ||
| 4 | import java.io.Writer; | ||
| 5 | |||
| 6 | public class LFPrintWriter extends PrintWriter { | ||
| 7 | public LFPrintWriter(Writer out) { | ||
| 8 | super(out); | ||
| 9 | } | ||
| 10 | |||
| 11 | @Override | ||
| 12 | public void println() { | ||
| 13 | // https://stackoverflow.com/a/14749004 | ||
| 14 | write('\n'); | ||
| 15 | } | ||
| 16 | } | ||
diff --git a/src/main/java/cuchaz/enigma/utils/Utils.java b/src/main/java/cuchaz/enigma/utils/Utils.java deleted file mode 100644 index b45b00d..0000000 --- a/src/main/java/cuchaz/enigma/utils/Utils.java +++ /dev/null | |||
| @@ -1,179 +0,0 @@ | |||
| 1 | /******************************************************************************* | ||
| 2 | * Copyright (c) 2015 Jeff Martin. | ||
| 3 | * All rights reserved. This program and the accompanying materials | ||
| 4 | * are made available under the terms of the GNU Lesser General Public | ||
| 5 | * License v3.0 which accompanies this distribution, and is available at | ||
| 6 | * http://www.gnu.org/licenses/lgpl.html | ||
| 7 | * <p> | ||
| 8 | * Contributors: | ||
| 9 | * Jeff Martin - initial API and implementation | ||
| 10 | ******************************************************************************/ | ||
| 11 | |||
| 12 | package cuchaz.enigma.utils; | ||
| 13 | |||
| 14 | import com.google.common.io.CharStreams; | ||
| 15 | import org.objectweb.asm.Opcodes; | ||
| 16 | |||
| 17 | import javax.swing.*; | ||
| 18 | import javax.swing.text.BadLocationException; | ||
| 19 | import javax.swing.text.JTextComponent; | ||
| 20 | import java.awt.*; | ||
| 21 | import java.awt.event.MouseEvent; | ||
| 22 | import java.io.IOException; | ||
| 23 | import java.io.InputStream; | ||
| 24 | import java.io.InputStreamReader; | ||
| 25 | import java.net.URI; | ||
| 26 | import java.net.URISyntaxException; | ||
| 27 | import java.nio.charset.StandardCharsets; | ||
| 28 | import java.nio.file.Files; | ||
| 29 | import java.nio.file.Path; | ||
| 30 | import java.security.MessageDigest; | ||
| 31 | import java.security.NoSuchAlgorithmException; | ||
| 32 | import java.util.*; | ||
| 33 | import java.util.List; | ||
| 34 | import java.util.stream.Collectors; | ||
| 35 | import java.util.zip.ZipEntry; | ||
| 36 | import java.util.zip.ZipFile; | ||
| 37 | |||
| 38 | public class Utils { | ||
| 39 | |||
| 40 | public static final int ASM_VERSION = Opcodes.ASM8; | ||
| 41 | |||
| 42 | public static int combineHashesOrdered(Object... objs) { | ||
| 43 | final int prime = 67; | ||
| 44 | int result = 1; | ||
| 45 | for (Object obj : objs) { | ||
| 46 | result *= prime; | ||
| 47 | if (obj != null) { | ||
| 48 | result += obj.hashCode(); | ||
| 49 | } | ||
| 50 | } | ||
| 51 | return result; | ||
| 52 | } | ||
| 53 | |||
| 54 | public static int combineHashesOrdered(List<Object> objs) { | ||
| 55 | final int prime = 67; | ||
| 56 | int result = 1; | ||
| 57 | for (Object obj : objs) { | ||
| 58 | result *= prime; | ||
| 59 | if (obj != null) { | ||
| 60 | result += obj.hashCode(); | ||
| 61 | } | ||
| 62 | } | ||
| 63 | return result; | ||
| 64 | } | ||
| 65 | |||
| 66 | public static String readStreamToString(InputStream in) throws IOException { | ||
| 67 | return CharStreams.toString(new InputStreamReader(in, "UTF-8")); | ||
| 68 | } | ||
| 69 | |||
| 70 | public static String readResourceToString(String path) throws IOException { | ||
| 71 | InputStream in = Utils.class.getResourceAsStream(path); | ||
| 72 | if (in == null) { | ||
| 73 | throw new IllegalArgumentException("Resource not found! " + path); | ||
| 74 | } | ||
| 75 | return readStreamToString(in); | ||
| 76 | } | ||
| 77 | |||
| 78 | public static void openUrl(String url) { | ||
| 79 | if (Desktop.isDesktopSupported()) { | ||
| 80 | Desktop desktop = Desktop.getDesktop(); | ||
| 81 | try { | ||
| 82 | desktop.browse(new URI(url)); | ||
| 83 | } catch (IOException ex) { | ||
| 84 | throw new Error(ex); | ||
| 85 | } catch (URISyntaxException ex) { | ||
| 86 | throw new IllegalArgumentException(ex); | ||
| 87 | } | ||
| 88 | } | ||
| 89 | } | ||
| 90 | |||
| 91 | public static JLabel unboldLabel(JLabel label) { | ||
| 92 | Font font = label.getFont(); | ||
| 93 | label.setFont(font.deriveFont(font.getStyle() & ~Font.BOLD)); | ||
| 94 | return label; | ||
| 95 | } | ||
| 96 | |||
| 97 | public static void showToolTipNow(JComponent component) { | ||
| 98 | // HACKHACK: trick the tooltip manager into showing the tooltip right now | ||
| 99 | ToolTipManager manager = ToolTipManager.sharedInstance(); | ||
| 100 | int oldDelay = manager.getInitialDelay(); | ||
| 101 | manager.setInitialDelay(0); | ||
| 102 | manager.mouseMoved(new MouseEvent(component, MouseEvent.MOUSE_MOVED, System.currentTimeMillis(), 0, 0, 0, 0, false)); | ||
| 103 | manager.setInitialDelay(oldDelay); | ||
| 104 | } | ||
| 105 | |||
| 106 | public static Rectangle safeModelToView(JTextComponent component, int modelPos) { | ||
| 107 | if (modelPos < 0) { | ||
| 108 | modelPos = 0; | ||
| 109 | } else if (modelPos >= component.getText().length()) { | ||
| 110 | modelPos = component.getText().length(); | ||
| 111 | } | ||
| 112 | try { | ||
| 113 | return component.modelToView(modelPos); | ||
| 114 | } catch (BadLocationException e) { | ||
| 115 | throw new RuntimeException(e); | ||
| 116 | } | ||
| 117 | } | ||
| 118 | |||
| 119 | public static boolean getSystemPropertyAsBoolean(String property, boolean defValue) { | ||
| 120 | String value = System.getProperty(property); | ||
| 121 | return value == null ? defValue : Boolean.parseBoolean(value); | ||
| 122 | } | ||
| 123 | |||
| 124 | public static void delete(Path path) throws IOException { | ||
| 125 | if (Files.exists(path)) { | ||
| 126 | for (Path p : Files.walk(path).sorted(Comparator.reverseOrder()).collect(Collectors.toList())) { | ||
| 127 | Files.delete(p); | ||
| 128 | } | ||
| 129 | } | ||
| 130 | } | ||
| 131 | |||
| 132 | public static byte[] zipSha1(Path path) throws IOException { | ||
| 133 | MessageDigest digest; | ||
| 134 | try { | ||
| 135 | digest = MessageDigest.getInstance("SHA-1"); | ||
| 136 | } catch (NoSuchAlgorithmException e) { | ||
| 137 | // Algorithm guaranteed to be supported | ||
| 138 | throw new RuntimeException(e); | ||
| 139 | } | ||
| 140 | try (ZipFile zip = new ZipFile(path.toFile())) { | ||
| 141 | List<? extends ZipEntry> entries = Collections.list(zip.entries()); | ||
| 142 | // only compare classes (some implementations may not generate directory entries) | ||
| 143 | entries.removeIf(entry -> !entry.getName().toLowerCase(Locale.ROOT).endsWith(".class")); | ||
| 144 | // different implementations may add zip entries in a different order | ||
| 145 | entries.sort(Comparator.comparing(ZipEntry::getName)); | ||
| 146 | byte[] buffer = new byte[8192]; | ||
| 147 | for (ZipEntry entry : entries) { | ||
| 148 | digest.update(entry.getName().getBytes(StandardCharsets.UTF_8)); | ||
| 149 | try (InputStream in = zip.getInputStream(entry)) { | ||
| 150 | int n; | ||
| 151 | while ((n = in.read(buffer)) != -1) { | ||
| 152 | digest.update(buffer, 0, n); | ||
| 153 | } | ||
| 154 | } | ||
| 155 | } | ||
| 156 | } | ||
| 157 | return digest.digest(); | ||
| 158 | } | ||
| 159 | |||
| 160 | public static String caplisiseCamelCase(String input){ | ||
| 161 | StringJoiner stringJoiner = new StringJoiner(" "); | ||
| 162 | for (String word : input.toLowerCase(Locale.ROOT).split("_")) { | ||
| 163 | stringJoiner.add(word.substring(0, 1).toUpperCase(Locale.ROOT) + word.substring(1)); | ||
| 164 | } | ||
| 165 | return stringJoiner.toString(); | ||
| 166 | } | ||
| 167 | |||
| 168 | public static boolean isBlank(String input) { | ||
| 169 | if (input == null) { | ||
| 170 | return true; | ||
| 171 | } | ||
| 172 | for (int i = 0; i < input.length(); i++) { | ||
| 173 | if (!Character.isWhitespace(input.charAt(i))) { | ||
| 174 | return false; | ||
| 175 | } | ||
| 176 | } | ||
| 177 | return true; | ||
| 178 | } | ||
| 179 | } | ||
diff --git a/src/test/java/cuchaz/enigma/TestSourceIndex.java b/src/test/java/cuchaz/enigma/TestSourceIndex.java deleted file mode 100644 index b201608..0000000 --- a/src/test/java/cuchaz/enigma/TestSourceIndex.java +++ /dev/null | |||
| @@ -1,74 +0,0 @@ | |||
| 1 | /******************************************************************************* | ||
| 2 | * Copyright (c) 2015 Jeff Martin. | ||
| 3 | * All rights reserved. This program and the accompanying materials | ||
| 4 | * are made available under the terms of the GNU Lesser General Public | ||
| 5 | * License v3.0 which accompanies this distribution, and is available at | ||
| 6 | * http://www.gnu.org/licenses/lgpl.html | ||
| 7 | * | ||
| 8 | * Contributors: | ||
| 9 | * Jeff Martin - initial API and implementation | ||
| 10 | ******************************************************************************/ | ||
| 11 | |||
| 12 | package cuchaz.enigma; | ||
| 13 | |||
| 14 | import com.google.common.collect.Sets; | ||
| 15 | import cuchaz.enigma.analysis.ClassCache; | ||
| 16 | import cuchaz.enigma.source.*; | ||
| 17 | import cuchaz.enigma.analysis.index.JarIndex; | ||
| 18 | import cuchaz.enigma.translation.representation.entry.ClassEntry; | ||
| 19 | import org.junit.Test; | ||
| 20 | |||
| 21 | import java.nio.file.Path; | ||
| 22 | import java.nio.file.Paths; | ||
| 23 | import java.util.Set; | ||
| 24 | |||
| 25 | public class TestSourceIndex { | ||
| 26 | @Test | ||
| 27 | public void indexEverything() | ||
| 28 | throws Exception { | ||
| 29 | // Figure out where Minecraft is... | ||
| 30 | final String mcDir = System.getProperty("enigma.test.minecraftdir"); | ||
| 31 | Path mcJar = null; | ||
| 32 | if (mcDir == null) { | ||
| 33 | String osname = System.getProperty("os.name").toLowerCase(); | ||
| 34 | if (osname.contains("nix") || osname.contains("nux") || osname.contains("solaris")) { | ||
| 35 | mcJar = Paths.get(System.getProperty("user.home"), ".minecraft/versions/1.8.3/1.8.3.jar"); | ||
| 36 | } else if (osname.contains("mac") || osname.contains("darwin")) { | ||
| 37 | mcJar = Paths.get(System.getProperty("user.home"), "Library/Application Support/minecraft/versions/1.8.3/1.8.3.jar"); | ||
| 38 | } else if (osname.contains("win")) { | ||
| 39 | mcJar = Paths.get(System.getenv("AppData"), ".minecraft/versions/1.8.3/1.8.3.jar"); | ||
| 40 | } | ||
| 41 | } else { | ||
| 42 | mcJar = Paths.get(mcDir, "versions/1.8.3/1.8.3.jar"); | ||
| 43 | } | ||
| 44 | |||
| 45 | if (mcJar == null) { | ||
| 46 | throw new NullPointerException("Couldn't find jar"); | ||
| 47 | } | ||
| 48 | |||
| 49 | Enigma enigma = Enigma.create(); | ||
| 50 | EnigmaProject project = enigma.openJar(mcJar, ProgressListener.none()); | ||
| 51 | |||
| 52 | ClassCache classCache = project.getClassCache(); | ||
| 53 | JarIndex index = project.getJarIndex(); | ||
| 54 | |||
| 55 | Decompiler decompiler = Decompilers.PROCYON.create(classCache, new SourceSettings(false, false)); | ||
| 56 | |||
| 57 | // get all classes that aren't inner classes | ||
| 58 | Set<ClassEntry> classEntries = Sets.newHashSet(); | ||
| 59 | for (ClassEntry obfClassEntry : index.getEntryIndex().getClasses()) { | ||
| 60 | if (!obfClassEntry.isInnerClass()) { | ||
| 61 | classEntries.add(obfClassEntry); | ||
| 62 | } | ||
| 63 | } | ||
| 64 | |||
| 65 | for (ClassEntry obfClassEntry : classEntries) { | ||
| 66 | try { | ||
| 67 | Source source = decompiler.getSource(obfClassEntry.getName()); | ||
| 68 | source.index(); | ||
| 69 | } catch (Throwable t) { | ||
| 70 | throw new Error("Unable to index " + obfClassEntry, t); | ||
| 71 | } | ||
| 72 | } | ||
| 73 | } | ||
| 74 | } | ||