public static void removeMapExtensions(NodeModel node) { final IExtension[] extensionArray = node.getSharedExtensions().values().toArray(new IExtension[]{}); for(IExtension extension : extensionArray){ if(MapExtensions.isMapExtension(extension.getClass())){ node.removeExtension(extension); } } }
@SuppressWarnings({ "unchecked", "rawtypes" }) public PersistentNodeHook() { super(); final Class<? extends IExtension> extensionClass = getExtensionClass(); if (getHookAnnotation().onceForMap()) { MapExtensions.registerMapExtension(extensionClass); } // this.modeController = modeController; // controller = modeController.getController(); final ModeController modeController = Controller.getCurrentModeController(); if (modeController.supportsHookActions()) registerActions(); final MapController mapController = modeController.getMapController(); mapController.getReadManager().addElementHandler("hook", createXmlReader()); final IExtensionElementWriter xmlWriter = createXmlWriter(); if (xmlWriter != null) { mapController.getWriteManager().addExtensionElementWriter(extensionClass, xmlWriter); } if (this instanceof IExtension) { // do not use getExtensionClass() here since in several subclasses getExtensionClass() returns a // different class than getClass() modeController.addExtension((Class<? extends IExtension>) getClass(), (IExtension) this); } }
for(final IExtension extension : oldExtensions){ final Class<? extends IExtension> clazz = extension.getClass(); if(MapExtensions.isMapExtension(clazz)){ existingNode.removeExtension(clazz); for(final IExtension extension : newExtensions){ final Class<? extends IExtension> clazz = extension.getClass(); if(MapExtensions.isMapExtension(clazz)){ existingNode.addExtension(extension);