Трябва да изпълня някакъв код само за RCP, а не за RAP, как мога да направя това

Работя върху eclipse RCP/RAP един източник. трябва да изпълня някакъв код в resotreState() и saveState() метод на ApplicationWorkbenchAdvisor клас, който е необходим само за RCP, но не и за RAP. Какъв е най-добрият начин за прилагане на това?


person Sharif    schedule 25.01.2015    source източник


Отговори (1)


Ако кодът, който трябва да се изпълнява само в RCP, се компилира и на двете платформи, тогава можете да направите заявка SWT#getPlatform() по този начин:

if( !SWT.getPlatform().startsWith( "rap" ) ) {
  // execute RCP code
}

Ако RCP кодът използва API, който не е наличен и на двете платформи, тогава препоръчвам да извлечете кода във фрагмент и да разгърнете този фрагмент само с RCP приложенията. Потърсете „rap single sourcing“ за повече информация.

person Rüdiger Herrmann    schedule 25.01.2015
comment
Моля, вижте следния код: @Override public IStatus saveState(IMemento memento) { TerminalCompatibility.saveState(memento); ServerStorageController.getInstance().saveState(memento); return super.saveState(memento); } – този код зависи от IMemento. Възможно ли е да преместя този код в RCP специфичен фрагмент. не искам да пиша празни класове за съвместимост. - person Sharif; 28.01.2015
comment
IMemento е наличен и на двете платформи, така че можете да използвате първия подход и да защитите кода, който запазва състоянието с условие if. - person Rüdiger Herrmann; 28.01.2015