Могу ли я использовать Eclipse JDT для создания новых "рабочих копий" исходных файлов только в памяти?
Я использую Eclipse JDT для создания платформы рефакторинга Java, для изучения различных рефакторингов в памяти перед тем, как выбрать один и сохранить его. Я могу создавать коллекции рабочих копий исходных файлов, редактировать их в памяти и фиксировать изменения на диске с помощью инфраструктуры JDT.
Тем не менее, я также хочу сгенерировать новые исходные файлы "рабочей копии" в памяти как часть рефакторинга, и создать соответствующий реальный исходный файл, только если я фиксирую рабочую копию. Я видел различные намеки, что это возможно, например, http://www.jarvana.com/jarvana/view/org/eclipse/jdt/doc/isv/3.3.0-v20070613/isv-3.3.0-v20070613.jar!/guide/jdt_api_manip.htm говорит: "Обратите внимание, что модуль компиляции не обязательно должен существовать в модели Java для создания рабочей копии".
Пока мне удалось создать только новый реальный файл, т.е.
ICompilationUnit newICompilationUnit = myPackage.createCompilationUnit(newName, "package piffle; public class Baz{private int i=0;}", false, null);
Это не то, что я хочу. Кто-нибудь знает, как создать новый исходный файл "рабочая копия", который не появится в моей файловой системе, пока я его не зафиксирую? Или любой другой механизм для достижения того же?
2 ответа
Это может быть неполным решением вашей проблемы, но Eclipse обрабатывает ресурсы через EFS (уровень расширяемой файловой системы). Реализации файловых систем являются подключаемыми. Таким образом, вы можете создать в своей рабочей области ссылку, указывающую на файловую систему в памяти, и eclipse покажет эти ресурсы как любые другие, чтобы вы могли редактировать, компилировать их или делать то, что вы обычно делаете с файлами в Eclipse. За исключением того, что эти файлы не переживут перезапуски Eclipse.
Другим вариантом может быть реализация вашей собственной файловой системы, которая может фиксировать и выполнять откат по желанию. Но этот маршрут может быть излишним.
Вот как создать ссылку на ресурс в рабочей области
Вот реализация файловой системы в памяти (обратите внимание, что источник должен быть извлечен из CVS, а путь в хранилище на этой странице устарел - используйте браузер CVS, чтобы найти правильный путь).
Обратите внимание, что реализация EFS выбрана для имени схемы URI, поэтому, чтобы указать на FS памяти, вы должны начать целевой URI ссылки с "memory:".
Вы можете посмотреть по этой ссылке http://wiki.eclipse.org/index.php/EFS
Там вы найдете пример реализации EFS в памяти.