Могу ли я использовать 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 в памяти.

Другие вопросы по тегам