aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Bur2013-03-13 15:21:20 (EDT)
committerJudith Gull2013-03-13 15:21:20 (EDT)
commit3d40a0ee03de10d50aecbf8ecc64f111c967be69 (patch)
treed39f165fc7340961f844c8fd20d3a5c6c2e13dd0
parent30d58fbddba173101b3a4800a0a70ecda9309bc4 (diff)
downloadorg.eclipse.scout.rt-3d40a0ee03de10d50aecbf8ecc64f111c967be69.zip
org.eclipse.scout.rt-3d40a0ee03de10d50aecbf8ecc64f111c967be69.tar.gz
org.eclipse.scout.rt-3d40a0ee03de10d50aecbf8ecc64f111c967be69.tar.bz2
Bug 403144 - Remove deprecated
org.eclipse.scout.rt.extension.client.Replace annotation Applies patch by Andi Bur
-rw-r--r--org.eclipse.scout.rt.extension.client.test/src/org/eclipse/scout/rt/extension/client/ExtensionUtilityTest.java109
-rw-r--r--org.eclipse.scout.rt.extension.client.test/src/org/eclipse/scout/rt/extension/client/ui/basic/table/ExtensibleTableTest.java76
-rw-r--r--org.eclipse.scout.rt.extension.client/src/org/eclipse/scout/rt/extension/client/ExtensionUtility.java100
-rw-r--r--org.eclipse.scout.rt.extension.client/src/org/eclipse/scout/rt/extension/client/Replace.java35
-rw-r--r--org.eclipse.scout.rt.extension.client/src/org/eclipse/scout/rt/extension/client/ui/basic/table/AbstractExtensibleTable.java50
-rw-r--r--org.eclipse.scout.rt.extension.client/src/org/eclipse/scout/rt/extension/client/ui/desktop/outline/pages/AbstractExtensiblePageWithNodes.java2
6 files changed, 2 insertions, 370 deletions
diff --git a/org.eclipse.scout.rt.extension.client.test/src/org/eclipse/scout/rt/extension/client/ExtensionUtilityTest.java b/org.eclipse.scout.rt.extension.client.test/src/org/eclipse/scout/rt/extension/client/ExtensionUtilityTest.java
index 34bab0f..29d9264 100644
--- a/org.eclipse.scout.rt.extension.client.test/src/org/eclipse/scout/rt/extension/client/ExtensionUtilityTest.java
+++ b/org.eclipse.scout.rt.extension.client.test/src/org/eclipse/scout/rt/extension/client/ExtensionUtilityTest.java
@@ -14,8 +14,8 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
-import java.util.Map;
+import org.eclipse.scout.commons.annotations.Replace;
import org.eclipse.scout.rt.client.ui.action.menu.IMenu;
import org.eclipse.scout.rt.extension.client.EnclosingObjectFixture.InnerClass.InnerInnerClass;
import org.eclipse.scout.rt.extension.client.EnclosingObjectFixture.InnerClass.InnerInnerClass.InnerInnerInnerClass;
@@ -29,7 +29,6 @@ import org.junit.Test;
/**
* @since 3.9.0
*/
-@SuppressWarnings("deprecation")
public class ExtensionUtilityTest {
private List<Object> m_instanceList;
@@ -37,7 +36,6 @@ public class ExtensionUtilityTest {
private P_AExt m_aExt;
private P_B m_b;
private P_C m_c;
- private P_D m_d;
@Before
public void before() {
@@ -45,7 +43,6 @@ public class ExtensionUtilityTest {
m_aExt = new P_AExt();
m_b = new P_B();
m_c = new P_C();
- m_d = new P_D();
m_instanceList = new ArrayList<Object>();
m_instanceList.add(m_a);
m_instanceList.add(m_aExt);
@@ -91,98 +88,6 @@ public class ExtensionUtilityTest {
}
@Test
- public void testProcessReplaceAnnotationsNullAndEmpty() {
- // no exceptions
- Map<Object, Object> replacementMap = ExtensionUtility.processReplaceAnnotations(null);
- Assert.assertNotNull(replacementMap);
- Assert.assertTrue(replacementMap.isEmpty());
- //
- replacementMap = ExtensionUtility.processReplaceAnnotations(Collections.emptyList());
- Assert.assertNotNull(replacementMap);
- Assert.assertTrue(replacementMap.isEmpty());
- }
-
- @Test
- public void testProcessReplaceAnnotationsNoRemoveAnnotation() {
- List<Object> list = Arrays.asList(m_a, m_b, m_c);
- Map<Object, Object> replacementMap = ExtensionUtility.processReplaceAnnotations(list);
- Assert.assertEquals(Arrays.asList(m_a, m_b, m_c), list);
- Assert.assertNotNull(replacementMap);
- Assert.assertTrue(replacementMap.isEmpty());
- }
-
- @Test
- public void testProcessReplaceAnnotationsSuperclass() {
- // m_a is removed
- Map<Object, Object> replacementMap = ExtensionUtility.processReplaceAnnotations(m_instanceList);
- Assert.assertEquals(Arrays.asList(m_aExt, m_b, m_c), m_instanceList);
- Assert.assertNotNull(replacementMap);
- Assert.assertEquals(1, replacementMap.size());
- Assert.assertSame(m_aExt, replacementMap.get(m_a));
-
- // no effect when processing the list a second time
- replacementMap = ExtensionUtility.processReplaceAnnotations(m_instanceList);
- Assert.assertEquals(Arrays.asList(m_aExt, m_b, m_c), m_instanceList);
- Assert.assertNotNull(replacementMap);
- Assert.assertTrue(replacementMap.isEmpty());
- }
-
- @Test
- public void testProcessReplaceAnnotationsCustomCalss() {
- List<Object> list = new ArrayList<Object>();
- list.add(m_a);
- list.add(m_b);
- list.add(m_c);
- list.add(m_d);
- Map<Object, Object> replacementMap = ExtensionUtility.processReplaceAnnotations(list);
- Assert.assertEquals(Arrays.asList(m_a, m_c, m_d), list);
- Assert.assertNotNull(replacementMap);
- Assert.assertEquals(1, replacementMap.size());
- Assert.assertSame(m_d, replacementMap.get(m_b));
- }
-
- @Test
- public void testProcessReplaceAnnotationsAbstractClass1() {
- P_E1 e1 = new P_E1();
- P_F f = new P_F();
- List<Object> list = new ArrayList<Object>();
- list.add(f);
- list.add(e1);
- Map<Object, Object> replacementMap = ExtensionUtility.processReplaceAnnotations(list);
- Assert.assertEquals(Arrays.asList(f), list);
- Assert.assertNotNull(replacementMap);
- Assert.assertEquals(1, replacementMap.size());
- Assert.assertSame(f, replacementMap.get(e1));
- }
-
- @Test
- public void testProcessReplaceAnnotationsAbstractClass2() {
- P_E1 e1 = new P_E1();
- P_E2 e2 = new P_E2();
- P_F f = new P_F();
- List<Object> list = new ArrayList<Object>();
- list.add(e2);
- list.add(f);
- list.add(e1);
- Map<Object, Object> replacementMap = ExtensionUtility.processReplaceAnnotations(list);
- Assert.assertEquals(Arrays.asList(f, e1), list);
- Assert.assertNotNull(replacementMap);
- Assert.assertEquals(1, replacementMap.size());
- Assert.assertSame(f, replacementMap.get(e2));
- }
-
- @Test
- public void testProcessReplaceAnnotationsPrimitiveType() {
- P_G g = new P_G();
- List<Object> list = new ArrayList<Object>();
- list.add(g);
- Map<Object, Object> replacementMap = ExtensionUtility.processReplaceAnnotations(list);
- Assert.assertEquals(Arrays.asList(g), list);
- Assert.assertNotNull(replacementMap);
- Assert.assertTrue(replacementMap.isEmpty());
- }
-
- @Test
public void testGetEnclosingObject() {
Assert.assertNull(ExtensionUtility.getEnclosingObject(null));
Assert.assertNull(ExtensionUtility.getEnclosingObject(Long.valueOf(42)));
@@ -255,10 +160,6 @@ public class ExtensionUtilityTest {
private static class P_C {
}
- @Replace(P_B.class)
- private static class P_D {
- }
-
private abstract static class AbstractE {
}
@@ -267,12 +168,4 @@ public class ExtensionUtilityTest {
private static class P_E2 extends AbstractE {
}
-
- @Replace(AbstractE.class)
- private static class P_F {
- }
-
- @Replace(int.class)
- private static class P_G {
- }
}
diff --git a/org.eclipse.scout.rt.extension.client.test/src/org/eclipse/scout/rt/extension/client/ui/basic/table/ExtensibleTableTest.java b/org.eclipse.scout.rt.extension.client.test/src/org/eclipse/scout/rt/extension/client/ui/basic/table/ExtensibleTableTest.java
deleted file mode 100644
index 9d94327..0000000
--- a/org.eclipse.scout.rt.extension.client.test/src/org/eclipse/scout/rt/extension/client/ui/basic/table/ExtensibleTableTest.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2012 BSI Business Systems Integration AG.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * BSI Business Systems Integration AG - initial API and implementation
- ******************************************************************************/
-package org.eclipse.scout.rt.extension.client.ui.basic.table;
-
-import org.eclipse.scout.commons.annotations.Order;
-import org.eclipse.scout.rt.client.ui.action.menu.AbstractMenu;
-import org.eclipse.scout.rt.client.ui.action.menu.IMenu;
-import org.eclipse.scout.rt.extension.client.Replace;
-import org.junit.Assert;
-import org.junit.Test;
-
-/**
- * @since 3.9.0
- */
-@SuppressWarnings("deprecation")
-public class ExtensibleTableTest {
-
- @Test
- public void testGetDefaultMenu() {
- P_ExtensibleTableWithDefaultMenu table = new P_ExtensibleTableWithDefaultMenu();
- Assert.assertSame(P_ExtensibleTableWithDefaultMenu.DefaultMenu.class, table.getDefaultMenuInternal());
- }
-
- @Test
- public void testGetReplacedDefaultMenu() {
- P_ExtensibleTableWithReplacedDefaultMenu table = new P_ExtensibleTableWithReplacedDefaultMenu();
- Assert.assertSame(P_ExtensibleTableWithDefaultMenu.DefaultMenu.class, table.getConfiguredDefaultMenu());
- Assert.assertSame(P_ExtensibleTableWithReplacedDefaultMenu.ExtendedMenu.class, table.getDefaultMenuInternal());
- }
-
- @Test
- public void testGetReplacedDefaultMenuNotExtendingConfiguredDefaultMenu() {
- P_ExtensibleTableWithReplacedDefaultMenuNotExtending table = new P_ExtensibleTableWithReplacedDefaultMenuNotExtending();
- Assert.assertSame(P_ExtensibleTableWithDefaultMenu.DefaultMenu.class, table.getConfiguredDefaultMenu());
- Assert.assertNull(table.getDefaultMenuInternal());
- }
-
- private static class P_ExtensibleTableWithDefaultMenu extends AbstractExtensibleTable {
-
- @Override
- protected Class<? extends IMenu> getConfiguredDefaultMenu() {
- return DefaultMenu.class;
- }
-
- @Order(10)
- public class DefaultMenu extends AbstractMenu {
-
- }
- }
-
- private static class P_ExtensibleTableWithReplacedDefaultMenu extends P_ExtensibleTableWithDefaultMenu {
-
- @Order(10)
- @Replace
- public class ExtendedMenu extends DefaultMenu {
-
- }
- }
-
- private static class P_ExtensibleTableWithReplacedDefaultMenuNotExtending extends P_ExtensibleTableWithDefaultMenu {
-
- @Order(10)
- @Replace(P_ExtensibleTableWithDefaultMenu.DefaultMenu.class)
- public class ExtendedMenu extends AbstractMenu {
-
- }
- }
-}
diff --git a/org.eclipse.scout.rt.extension.client/src/org/eclipse/scout/rt/extension/client/ExtensionUtility.java b/org.eclipse.scout.rt.extension.client/src/org/eclipse/scout/rt/extension/client/ExtensionUtility.java
index caedc86..ba64e27 100644
--- a/org.eclipse.scout.rt.extension.client/src/org/eclipse/scout/rt/extension/client/ExtensionUtility.java
+++ b/org.eclipse.scout.rt.extension.client/src/org/eclipse/scout/rt/extension/client/ExtensionUtility.java
@@ -11,20 +11,10 @@
package org.eclipse.scout.rt.extension.client;
import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.TreeMap;
-import org.eclipse.scout.commons.BeanUtility;
import org.eclipse.scout.commons.CompareUtility;
-import org.eclipse.scout.commons.CompositeObject;
-import org.eclipse.scout.commons.ConfigurationUtility;
-import org.eclipse.scout.commons.TypeCastUtility;
import org.eclipse.scout.commons.logger.IScoutLogger;
import org.eclipse.scout.commons.logger.ScoutLogManager;
@@ -62,96 +52,6 @@ public final class ExtensionUtility {
}
/**
- * Removes those objects of the given list that match any {@link Replace} annotation on other elements being part of
- * the same list.
- *
- * @deprecated The {@link Replace} annotation this method works for has been replaced by
- * {@link org.eclipse.scout.commons.annotations.Replace}. The corresponding methods for this one are
- * {@link ConfigurationUtility#removeReplacedClasses(Class[])},
- * {@link ConfigurationUtility#getReplacementMapping(Class[])} and
- * {@link ConfigurationUtility#getReplacingLeafClasses(Class[])}.
- */
- @Deprecated
- @SuppressWarnings("deprecation")
- public static <T> Map<T, T> processReplaceAnnotations(List<T> list) {
- if (list == null || list.isEmpty()) {
- return Collections.emptyMap();
- }
-
- // get instances replacing other instances (i.e. replacements)
- List<T> replacements = new ArrayList<T>();
- for (T t : list) {
- if (t == null) {
- continue;
- }
-
- if (t.getClass().isAnnotationPresent(Replace.class)) {
- replacements.add(t);
- }
- }
-
- if (replacements.isEmpty()) {
- // no replacements
- return Collections.emptyMap();
- }
-
- Map<T, T> replacementMap = new HashMap<T, T>();
- for (T replacement : replacements) {
- Class<?> replacementClass = replacement.getClass();
- Replace replace = replacementClass.getAnnotation(Replace.class);
- Class classToBeReplaced = replace.value();
- if (classToBeReplaced == Object.class) {
- // replace superclass
- classToBeReplaced = replacementClass.getSuperclass();
- }
- if (classToBeReplaced == null || classToBeReplaced == Object.class || classToBeReplaced.isPrimitive()) {
- if (LOG.isInfoEnabled()) {
- LOG.info("invalid class to be replaced on [" + replacementClass + "], class to be replaced [" + classToBeReplaced + "]");
- }
- continue;
- }
- TreeMap<CompositeObject, T> candidates = new TreeMap<CompositeObject, T>();
- int counter = 0;
- for (T t : list) {
- if (t == replacement) {
- continue;
- }
- int score = BeanUtility.computeTypeDistance(classToBeReplaced, t.getClass());
- if (score == -1) {
- continue;
- }
- candidates.put(new CompositeObject(score, counter), t);
- counter++;
- }
- if (candidates.isEmpty()) {
- if (LOG.isInfoEnabled()) {
- LOG.info("no candidates found on replacement class [" + replacementClass + "], class to be replaced [" + classToBeReplaced + "]");
- }
- continue;
- }
- // get result and check quality
- Entry<CompositeObject, T> secondEntry = null;
- Iterator<Entry<CompositeObject, T>> iterator = candidates.entrySet().iterator();
- Entry<CompositeObject, T> firstEntry = iterator.next();
- if (iterator.hasNext()) {
- secondEntry = iterator.next();
- }
- // check quality
- if (secondEntry != null) {
- int firstScore = TypeCastUtility.castValue(((CompositeObject) firstEntry.getKey()).getComponent(0), int.class);
- int secondScore = TypeCastUtility.castValue(((CompositeObject) secondEntry.getKey()).getComponent(0), int.class);
- if (firstScore == secondScore) {
- LOG.warn("ambiguous original classes for replacement [" + classToBeReplaced + "], " +
- "candidates <" + firstEntry.getValue().getClass() + ", " + secondEntry.getValue().getClass() + ">");
- }
- }
- list.remove(firstEntry.getValue());
- replacementMap.put(firstEntry.getValue(), replacement);
- }
- return replacementMap;
- }
-
- /**
* Computes the enclosing object for the given object. The enclosing object is the corresponding to
* {@link Class#getEnclosingClass()}, but for instances.
*
diff --git a/org.eclipse.scout.rt.extension.client/src/org/eclipse/scout/rt/extension/client/Replace.java b/org.eclipse.scout.rt.extension.client/src/org/eclipse/scout/rt/extension/client/Replace.java
deleted file mode 100644
index d090c04..0000000
--- a/org.eclipse.scout.rt.extension.client/src/org/eclipse/scout/rt/extension/client/Replace.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2012 BSI Business Systems Integration AG.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * BSI Business Systems Integration AG - initial API and implementation
- ******************************************************************************/
-package org.eclipse.scout.rt.extension.client;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Annotation on scout configuration object used to replace other configured objects by the annotated one. By default
- * the first object is removed which type is the annotated class's super class.
- *
- * @since 3.9.0
- * @deprecated Do not use this class any more. It has been replaced by
- * {@link org.eclipse.scout.commons.annotations.Replace}.
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.TYPE)
-@Deprecated
-public @interface Replace {
-
- /**
- * @return Returns the type of the object to be replaced by an instance of the annotated class.
- */
- Class value() default Object.class;
-}
diff --git a/org.eclipse.scout.rt.extension.client/src/org/eclipse/scout/rt/extension/client/ui/basic/table/AbstractExtensibleTable.java b/org.eclipse.scout.rt.extension.client/src/org/eclipse/scout/rt/extension/client/ui/basic/table/AbstractExtensibleTable.java
index 1c065a3..6559005 100644
--- a/org.eclipse.scout.rt.extension.client/src/org/eclipse/scout/rt/extension/client/ui/basic/table/AbstractExtensibleTable.java
+++ b/org.eclipse.scout.rt.extension.client/src/org/eclipse/scout/rt/extension/client/ui/basic/table/AbstractExtensibleTable.java
@@ -10,19 +10,15 @@
******************************************************************************/
package org.eclipse.scout.rt.extension.client.ui.basic.table;
-import java.util.Collections;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
+import org.eclipse.scout.commons.annotations.Replace;
import org.eclipse.scout.commons.logger.IScoutLogger;
import org.eclipse.scout.commons.logger.ScoutLogManager;
import org.eclipse.scout.rt.client.ui.action.menu.IMenu;
import org.eclipse.scout.rt.client.ui.basic.table.AbstractTable;
-import org.eclipse.scout.rt.client.ui.basic.table.columns.IColumn;
import org.eclipse.scout.rt.extension.client.ExtensionUtility;
import org.eclipse.scout.rt.extension.client.IExtensibleScoutObject;
-import org.eclipse.scout.rt.extension.client.Replace;
import org.eclipse.scout.rt.extension.client.ui.action.menu.MenuExtensionUtility;
/**
@@ -34,12 +30,9 @@ import org.eclipse.scout.rt.extension.client.ui.action.menu.MenuExtensionUtility
*
* @since 3.9.0
*/
-@SuppressWarnings("deprecation")
public abstract class AbstractExtensibleTable extends AbstractTable implements IExtensibleScoutObject {
private static final IScoutLogger LOG = ScoutLogManager.getLogger(AbstractExtensibleTable.class);
- private Map<Class<? extends IMenu>, IMenu> m_replacementMenuMap;
-
public AbstractExtensibleTable() {
super();
}
@@ -49,52 +42,11 @@ public abstract class AbstractExtensibleTable extends AbstractTable implements I
}
@Override
- protected void injectColumnsInternal(List<IColumn<?>> columnList) {
- super.injectColumnsInternal(columnList);
- ExtensionUtility.processReplaceAnnotations(columnList);
- }
-
- @Override
protected void injectMenusInternal(List<IMenu> menuList) {
super.injectMenusInternal(menuList);
Object enclosingObject = ExtensionUtility.getEnclosingObject(this);
if (enclosingObject != null) {
MenuExtensionUtility.adaptMenus(enclosingObject, this, menuList);
}
- Map<IMenu, IMenu> replacements = ExtensionUtility.processReplaceAnnotations(menuList);
- if (replacements.isEmpty()) {
- m_replacementMenuMap = Collections.emptyMap();
- }
- else {
- m_replacementMenuMap = new HashMap<Class<? extends IMenu>, IMenu>(replacements.size());
- for (Map.Entry<IMenu, IMenu> mapping : replacements.entrySet()) {
- m_replacementMenuMap.put(mapping.getKey().getClass(), mapping.getValue());
- }
- }
- }
-
- @Override
- protected Class<? extends IMenu> getDefaultMenuInternal() {
- Class<? extends IMenu> configuredDefaultMenu = super.getDefaultMenuInternal();
- if (configuredDefaultMenu == null) {
- // no default menu configured
- return null;
- }
- IMenu replacementDefaultMenu = m_replacementMenuMap.get(configuredDefaultMenu);
- if (replacementDefaultMenu == null) {
- // configured default menu is not replaced
- return configuredDefaultMenu;
- }
-
- // sanity check
- if (!configuredDefaultMenu.isInstance(replacementDefaultMenu)) {
- if (LOG.isErrorEnabled()) {
- LOG.error("The replacement menu on table [" + getClass().getName() + "] is not assinable to the configured default menu. " +
- "configured default menu [" + configuredDefaultMenu.getName() + "], " +
- "replacement menu [" + replacementDefaultMenu.getClass().getName() + "]");
- }
- return null;
- }
- return replacementDefaultMenu.getClass();
}
}
diff --git a/org.eclipse.scout.rt.extension.client/src/org/eclipse/scout/rt/extension/client/ui/desktop/outline/pages/AbstractExtensiblePageWithNodes.java b/org.eclipse.scout.rt.extension.client/src/org/eclipse/scout/rt/extension/client/ui/desktop/outline/pages/AbstractExtensiblePageWithNodes.java
index aa3f0fa..1b90114 100644
--- a/org.eclipse.scout.rt.extension.client/src/org/eclipse/scout/rt/extension/client/ui/desktop/outline/pages/AbstractExtensiblePageWithNodes.java
+++ b/org.eclipse.scout.rt.extension.client/src/org/eclipse/scout/rt/extension/client/ui/desktop/outline/pages/AbstractExtensiblePageWithNodes.java
@@ -17,7 +17,6 @@ import org.eclipse.scout.commons.exception.ProcessingException;
import org.eclipse.scout.rt.client.ui.action.menu.IMenu;
import org.eclipse.scout.rt.client.ui.desktop.outline.pages.AbstractPageWithNodes;
import org.eclipse.scout.rt.client.ui.desktop.outline.pages.IPage;
-import org.eclipse.scout.rt.extension.client.ExtensionUtility;
import org.eclipse.scout.rt.extension.client.IExtensibleScoutObject;
import org.eclipse.scout.rt.extension.client.ui.action.menu.MenuExtensionUtility;
import org.eclipse.scout.rt.shared.ContextMap;
@@ -67,6 +66,5 @@ public abstract class AbstractExtensiblePageWithNodes extends AbstractPageWithNo
protected void injectMenusInternal(List<IMenu> menuList) {
super.injectMenusInternal(menuList);
MenuExtensionUtility.adaptMenus(this, this, menuList);
- ExtensionUtility.processReplaceAnnotations(menuList);
}
}