/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.structure;
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.Map;
import org.jdom.JDOMException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.enonic.cms.core.CaseInsensitiveString;
import com.enonic.cms.core.security.user.UserEntity;
import com.enonic.cms.core.security.user.UserKey;
import com.enonic.cms.core.structure.menuitem.MenuItemAccessResolver;
import com.enonic.cms.core.structure.menuitem.MenuItemEntity;
import static org.easymock.classextension.EasyMock.createNiceMock;
public class SiteXMLCreatorTest
extends AbstractSiteXmlCreatorTest
{
private static final Logger LOG = LoggerFactory.getLogger( SiteXMLCreatorTest.class.getName() );
private SiteXmlCreator siteXmlCreator;
private SiteEntity site_1;
private MenuItemEntity mi_1;
private MenuItemEntity mi_1_1;
private MenuItemEntity mi_1_1_1;
private MenuItemEntity mi_1_2;
private MenuItemEntity mi_1_2_1;
private MenuItemEntity mi_1_2_2;
private MenuItemEntity mi_1_2_2_1;
private MenuItemEntity mi_2;
private MenuItemEntity mi_2_1;
private MenuItemEntity oneMenuItemDeepInTheHugeMenu;
protected void setUp()
throws Exception
{
menuItemAccessResolver = createNiceMock( MenuItemAccessResolver.class );
standardUser = new UserEntity();
standardUser.setKey( new UserKey( "KEY" ) );
standardUser.setDisplayName( "Fullname" );
standardUser.setName( "uid" );
}
public void testCreateLegacyGetMenu()
throws JDOMException, IOException
{
String expectedXml = getXml( "/com/enonic/cms/core/structure/SiteXMLCreatorTest-Menu-fixture1-result-1.xml" );
SiteEntity site = createSiteFixture1();
siteXmlCreator = new SiteXmlCreator( menuItemAccessResolver, null );
assertEquals( expectedXml,
getFormattedXmlString( siteXmlCreator.createLegacyGetMenu( site, new SiteProperties( site.getKey(), null ) ) ) );
}
public void testGetHiddenMenuItemsAllHidden()
throws JDOMException, IOException
{
String expectedXml = getXml( "/com/enonic/cms/core/structure/SiteXMLCreatorTest-Menu-fixture1-result-all-hidden.xml" );
site_1 = new SiteEntity();
site_1.setKey( 1 );
site_1.setLanguage( createLanguage( "1", "no", "Norwegian" ) );
mi_1 = createMenuItem( "1", "mi 1", null, site_1 );
mi_1.setHidden( true );
mi_2 = createMenuItem( "2", "mi 2", null, site_1 );
mi_2.setHidden( true );
Map<CaseInsensitiveString, MenuItemEntity> topMenuItems = new LinkedHashMap<CaseInsensitiveString, MenuItemEntity>();
topMenuItems.put( new CaseInsensitiveString( mi_1.getName() ), mi_1 );
topMenuItems.put( new CaseInsensitiveString( mi_2.getName() ), mi_2 );
site_1.setTopMenuItems( topMenuItems );
siteXmlCreator = new SiteXmlCreator( menuItemAccessResolver, null );
assertEquals( expectedXml,
getFormattedXmlString( siteXmlCreator.createLegacyGetMenu( site_1, new SiteProperties( site_1.getKey(), null ) ) ) );
}
public void testGetHiddenMenuItemsOneHidden()
throws JDOMException, IOException
{
String expectedXml = getXml( "/com/enonic/cms/core/structure/SiteXMLCreatorTest-Menu-fixture1-result-one-hidden.xml" );
site_1 = new SiteEntity();
site_1.setKey( 1 );
site_1.setLanguage( createLanguage( "1", "no", "Norwegian" ) );
mi_1 = createMenuItem( "1", "mi 1", null, site_1 );
mi_1.setHidden( true );
mi_2 = createMenuItem( "2", "mi 2", null, site_1 );
mi_2.setHidden( false );
Map<CaseInsensitiveString, MenuItemEntity> topMenuItems = new LinkedHashMap<CaseInsensitiveString, MenuItemEntity>();
topMenuItems.put( new CaseInsensitiveString( mi_1.getName() ), mi_1 );
topMenuItems.put( new CaseInsensitiveString( mi_2.getName() ), mi_2 );
site_1.setTopMenuItems( topMenuItems );
siteXmlCreator = new SiteXmlCreator( menuItemAccessResolver, null );
assertEquals( expectedXml,
getFormattedXmlString( siteXmlCreator.createLegacyGetMenu( site_1, new SiteProperties( site_1.getKey(), null ) ) ) );
}
public void testGetHiddenMenuItemsIncludeHiddenMenuItems()
throws JDOMException, IOException
{
String expectedXml =
getXml( "/com/enonic/cms/core/structure/SiteXMLCreatorTest-Menu-fixture1-result-include-hidden-menu-items.xml" );
site_1 = new SiteEntity();
site_1.setKey( 1 );
site_1.setLanguage( createLanguage( "1", "no", "Norwegian" ) );
mi_1 = createMenuItem( "1", "mi 1", null, site_1 );
mi_1.setHidden( true );
mi_2 = createMenuItem( "2", "mi 2", null, site_1 );
mi_2.setHidden( true );
Map<CaseInsensitiveString, MenuItemEntity> topMenuItems = new LinkedHashMap<CaseInsensitiveString, MenuItemEntity>();
topMenuItems.put( new CaseInsensitiveString( mi_1.getName() ), mi_1 );
topMenuItems.put( new CaseInsensitiveString( mi_2.getName() ), mi_2 );
site_1.setTopMenuItems( topMenuItems );
siteXmlCreator = new SiteXmlCreator( menuItemAccessResolver, null );
siteXmlCreator.setIncludeHiddenMenuItems( true );
assertEquals( expectedXml,
getFormattedXmlString( siteXmlCreator.createLegacyGetMenu( site_1, new SiteProperties( site_1.getKey(), null ) ) ) );
}
public void testCreateLegacyGetMenuByMenuItem()
throws JDOMException, IOException
{
String expectedXml = getXml( "/com/enonic/cms/core/structure/SiteXMLCreatorTest-Menu-fixture1-result-2.xml" );
SiteEntity site = createSiteFixture1();
siteXmlCreator = new SiteXmlCreator( menuItemAccessResolver, null );
siteXmlCreator.setActiveMenuItem( mi_1_1 );
assertEquals( expectedXml,
getFormattedXmlString( siteXmlCreator.createLegacyGetMenu( site, new SiteProperties( site_1.getKey(), null ) ) ) );
}
public void testCreateLegacyGetMenuByMenuItemWithOneLevelOnly()
throws JDOMException, IOException
{
String expectedXml = getXml( "/com/enonic/cms/core/structure/SiteXMLCreatorTest-Menu-fixture1-result-3.xml" );
SiteEntity site = createSiteFixture1();
siteXmlCreator = new SiteXmlCreator( menuItemAccessResolver, null );
siteXmlCreator.setActiveMenuItem( mi_1_1 );
siteXmlCreator.setMenuItemLevels( 1 );
assertEquals( expectedXml,
getFormattedXmlString( siteXmlCreator.createLegacyGetMenu( site, new SiteProperties( site.getKey(), null ) ) ) );
}
public void testCreateLegacyGetSubMenu()
throws JDOMException, IOException
{
String expectedXml = getXml( "/com/enonic/cms/core/structure/SiteXMLCreatorTest-SubMenu-fixture1-result-1.xml" );
SiteEntity site = createSiteFixture1();
siteXmlCreator = new SiteXmlCreator( menuItemAccessResolver, null );
siteXmlCreator.setMenuItemInBranch( mi_1 );
assertEquals( expectedXml, getFormattedXmlString( siteXmlCreator.createLegacyGetSubMenu( site ) ) );
}
public void testCreateLegacyGetSubMenu2()
throws JDOMException, IOException
{
String expectedXml = getXml( "/com/enonic/cms/core/structure/SiteXMLCreatorTest-SubMenu-fixture1-result-2.xml" );
SiteEntity site = createSiteFixture1();
siteXmlCreator = new SiteXmlCreator( menuItemAccessResolver, null );
siteXmlCreator.setMenuItemInBranch( mi_1_2 );
assertEquals( expectedXml, getFormattedXmlString( siteXmlCreator.createLegacyGetSubMenu( site ) ) );
}
public void testCreateLegacyGetSubMenu3()
throws JDOMException, IOException
{
String expectedXml = getXml( "/com/enonic/cms/core/structure/SiteXMLCreatorTest-SubMenu-fixture1-result-3.xml" );
SiteEntity site = createSiteFixture1();
siteXmlCreator = new SiteXmlCreator( menuItemAccessResolver, null );
siteXmlCreator.setMenuItemInBranch( mi_1_2_1 );
assertEquals( expectedXml, getFormattedXmlString( siteXmlCreator.createLegacyGetSubMenu( site ) ) );
}
public void testCreateLegacyGetSubMenu4()
throws JDOMException, IOException
{
String expectedXml = getXml( "/com/enonic/cms/core/structure/SiteXMLCreatorTest-SubMenu-fixture1-result-4.xml" );
SiteEntity site = createSiteFixture1();
siteXmlCreator = new SiteXmlCreator( menuItemAccessResolver, null );
siteXmlCreator.setMenuItemInBranch( mi_1_2_2_1 );
assertEquals( expectedXml, getFormattedXmlString( siteXmlCreator.createLegacyGetSubMenu( site ) ) );
}
public void xtestCreateLegacyGetSubMenuWithLevels()
throws JDOMException, IOException
{
String expectedXml = getXml( "/com/enonic/cms/core/structure/SiteXMLCreatorTest-SubMenu-fixture1-result-5.xml" );
SiteEntity site = createSiteFixture1();
siteXmlCreator = new SiteXmlCreator( menuItemAccessResolver, null );
siteXmlCreator.setMenuItemLevels( 1 );
siteXmlCreator.setMenuItemInBranch( mi_1_2 );
assertEquals( expectedXml, getFormattedXmlString( siteXmlCreator.createLegacyGetSubMenu( site ) ) );
}
public void xtestCreateLegacyGetSubMenuWithLevels2()
throws JDOMException, IOException
{
String expectedXml = getXml( "/com/enonic/cms/core/structure/SiteXMLCreatorTest-SubMenu-fixture1-result-6.xml" );
SiteEntity site = createSiteFixture1();
siteXmlCreator = new SiteXmlCreator( menuItemAccessResolver, null );
siteXmlCreator.setMenuItemLevels( 2 );
siteXmlCreator.setMenuItemInBranch( mi_1 );
assertEquals( expectedXml, getFormattedXmlString( siteXmlCreator.createLegacyGetSubMenu( site ) ) );
}
public void xtestCreateLegacyGetSubMenuWithLevels3()
throws JDOMException, IOException
{
String expectedXml = getXml( "/com/enonic/cms/core/structure/SiteXMLCreatorTest-SubMenu-fixture1-result-7.xml" );
SiteEntity site = createSiteFixture1();
siteXmlCreator = new SiteXmlCreator( menuItemAccessResolver, null );
siteXmlCreator.setMenuItemLevels( 2 );
siteXmlCreator.setMenuItemInBranch( mi_1_2 );
assertEquals( expectedXml, getFormattedXmlString( siteXmlCreator.createLegacyGetSubMenu( site ) ) );
}
/**
* Expected marked with +:<br/>
* <pre>
* 1 +
* 11 +
* 111 + menuItemInBranch
* 12 +
* 121 +
* 122 +
* 1221 +
* 2
* 21
* </pre>
*/
public void xtestCreateLegacyGetMenuBranchSimple()
throws JDOMException, IOException
{
String expectedXml = getXml( "/com/enonic/cms/core/structure/SiteXMLCreatorTest-MenuBranch-fixture1-result-1.xml" );
SiteEntity site = createSiteFixture1();
siteXmlCreator = new SiteXmlCreator( menuItemAccessResolver, null );
siteXmlCreator.setMenuItemInBranch( mi_1_1_1 );
assertEquals( expectedXml, getFormattedXmlString( siteXmlCreator.createLegacyGetMenuBranch( site ) ) );
}
/**
* Expected marked with +:<br/>
* <pre>
* 1 +
* 11 +
* 111 + menuItemInBranch
* 12 +
* 121 +
* 122 +
* 1221 +
* 2
* 21
* </pre>
*/
public void xtestCreateLegacyGetMenuBranchSimple2()
throws JDOMException, IOException
{
String expectedXml = getXml( "/com/enonic/cms/core/structure/SiteXMLCreatorTest-MenuBranch-fixture1-result-1b.xml" );
SiteEntity site = createSiteFixture1();
siteXmlCreator = new SiteXmlCreator( menuItemAccessResolver, null );
siteXmlCreator.setMenuItemInBranch( mi_2_1 );
assertEquals( expectedXml, getFormattedXmlString( siteXmlCreator.createLegacyGetMenuBranch( site ) ) );
}
/**
* Expected marked with +:<br/>
* <pre>
* 1 +
* 11 +
* 111 menuItemInBranch
* 12 +
* 121
* 122
* 1221
* 2
* 21
* </pre>
*/
public void xtestCreateLegacyGetMenuBranchWithMaxLevel()
throws JDOMException, IOException
{
String expectedXml = getXml( "/com/enonic/cms/core/structure/SiteXMLCreatorTest-MenuBranch-fixture1-result-2.xml" );
SiteEntity site = createSiteFixture1();
siteXmlCreator = new SiteXmlCreator( menuItemAccessResolver, null );
siteXmlCreator.setMenuItemInBranch( mi_1_1_1 );
siteXmlCreator.setMenuItemLevels( 2 );
assertEquals( expectedXml, getFormattedXmlString( siteXmlCreator.createLegacyGetMenuBranch( site ) ) );
}
/**
* Expected marked with +:<br/>
* <pre>
* 1
* 11 +
* 111 + menuItemInBranch
* 12 +
* 121 +
* 122 +
* 1221 +
* 2
* 21
* </pre>
*/
public void xtestCreateLegacyGetMenuBranchWithStartLevel()
throws JDOMException, IOException
{
String expectedXml = getXml( "/com/enonic/cms/core/structure/SiteXMLCreatorTest-MenuBranch-fixture1-result-3.xml" );
SiteEntity site = createSiteFixture1();
siteXmlCreator = new SiteXmlCreator( menuItemAccessResolver, null );
siteXmlCreator.setMenuItemInBranch( mi_1_1_1 );
siteXmlCreator.setBranchStartLevel( 1 );
assertEquals( expectedXml, getFormattedXmlString( siteXmlCreator.createLegacyGetMenuBranch( site ) ) );
}
/**
* Expected marked with +:<br/>
* <pre>
* 1
* 11
* 111 + menuItemInBranch
* 12
* 121
* 122
* 1221
* 2
* 21
* </pre>
*/
public void xtestCreateLegacyGetMenuBranchWithStartLevel2()
throws JDOMException, IOException
{
String expectedXml = getXml( "/com/enonic/cms/core/structure/SiteXMLCreatorTest-MenuBranch-fixture1-result-4.xml" );
SiteEntity site = createSiteFixture1();
siteXmlCreator = new SiteXmlCreator( menuItemAccessResolver, null );
siteXmlCreator.setMenuItemInBranch( mi_1_1_1 );
siteXmlCreator.setBranchStartLevel( 2 );
assertEquals( expectedXml, getFormattedXmlString( siteXmlCreator.createLegacyGetMenuBranch( site ) ) );
}
/**
* Expected marked with +:<br/>
* <pre>
* 1
* 11
* 111
* 12
* 121 + menuItemInBranch
* 122 +
* 1221 +
* 2
* 21
* </pre>
*/
public void xtestCreateLegacyGetMenuBranchWithStartLevel3()
throws JDOMException, IOException
{
String expectedXml = getXml( "/com/enonic/cms/core/structure/SiteXMLCreatorTest-MenuBranch-fixture1-result-5.xml" );
SiteEntity site = createSiteFixture1();
siteXmlCreator = new SiteXmlCreator( menuItemAccessResolver, null );
siteXmlCreator.setMenuItemInBranch( mi_1_2_1 );
siteXmlCreator.setBranchStartLevel( 2 );
assertEquals( expectedXml, getFormattedXmlString( siteXmlCreator.createLegacyGetMenuBranch( site ) ) );
}
/**
* Expected marked with +:<br/>
* <pre>
* 1
* 11
* 111
* 12
* 121
* 122 menuItemInBranch
* 1221 +
* 2
* 21
* </pre>
*/
public void xtestCreateLegacyGetMenuBranchWithStartLevel4()
throws JDOMException, IOException
{
String expectedXml = getXml( "/com/enonic/cms/core/structure/SiteXMLCreatorTest-MenuBranch-fixture1-result-6.xml" );
SiteEntity site = createSiteFixture1();
siteXmlCreator = new SiteXmlCreator( menuItemAccessResolver, null );
siteXmlCreator.setMenuItemInBranch( mi_1_2_2 );
siteXmlCreator.setBranchStartLevel( 3 );
assertEquals( expectedXml, getFormattedXmlString( siteXmlCreator.createLegacyGetMenuBranch( site ) ) );
}
/**
* Expected marked with +:<br/>
* <pre>
* 1
* 11
* 111
* 12
* 121 +
* 122 +
* 1221 menuItemInBranch
* 2
* 21
* </pre>
*/
public void xtestCreateLegacyGetMenuBranchWithStartLevelAndMaxLevel()
throws JDOMException, IOException
{
String expectedXml = getXml( "/com/enonic/cms/core/structure/SiteXMLCreatorTest-MenuBranch-fixture1-result-7.xml" );
SiteEntity site = createSiteFixture1();
siteXmlCreator = new SiteXmlCreator( menuItemAccessResolver, null );
siteXmlCreator.setMenuItemInBranch( mi_1_2_2_1 );
siteXmlCreator.setBranchStartLevel( 2 );
siteXmlCreator.setMenuItemLevels( 1 );
assertEquals( expectedXml, getFormattedXmlString( siteXmlCreator.createLegacyGetMenuBranch( site ) ) );
}
/**
* Expected marked with +:<br/>
* <pre>
* 1
* 11 +
* 111 +
* 12 +
* 121 +
* 122 +
* 1221 menuItemInBranch
* 2
* 21
* </pre>
*/
public void xtestCreateLegacyGetMenuBranchWithStartLevelAndMaxLevel2()
throws JDOMException, IOException
{
String expectedXml = getXml( "/com/enonic/cms/core/structure/SiteXMLCreatorTest-MenuBranch-fixture1-result-8.xml" );
SiteEntity site = createSiteFixture1();
siteXmlCreator = new SiteXmlCreator( menuItemAccessResolver, null );
siteXmlCreator.setMenuItemInBranch( mi_1_2_2_1 );
siteXmlCreator.setBranchStartLevel( 1 );
siteXmlCreator.setMenuItemLevels( 2 );
assertEquals( expectedXml, getFormattedXmlString( siteXmlCreator.createLegacyGetMenuBranch( site ) ) );
}
public void xtestSpeedCreateLegacyGetMenu()
{
SiteEntity site = createHugeSiteFixture( 5, 7, 4 );
siteXmlCreator = new SiteXmlCreator( menuItemAccessResolver, null );
siteXmlCreator.setMenuItemInBranch( oneMenuItemDeepInTheHugeMenu );
LOG.info( "Created huge site with " + keyCounter + " menu items" );
long start = System.currentTimeMillis();
siteXmlCreator.createLegacyGetMenu( site, new SiteProperties( site.getKey(), null ) );
long end = System.currentTimeMillis();
LOG.info( "SiteXmlCreator.createLegacyGetMenu took " + ( end - start ) + " ms" );
}
public void xtestSpeedCreateLegacyGetMenu2()
{
SiteEntity site = createHugeSiteFixture( 5, 4, 4 );
siteXmlCreator = new SiteXmlCreator( menuItemAccessResolver, null );
siteXmlCreator.setMenuItemInBranch( oneMenuItemDeepInTheHugeMenu );
LOG.info( "Created slightly huge site with " + keyCounter + " menu items" );
long start = System.currentTimeMillis();
siteXmlCreator.createLegacyGetMenu( site, new SiteProperties( site.getKey(), null ) );
long end = System.currentTimeMillis();
LOG.info( "SiteXmlCreator.createLegacyGetMenu took " + ( end - start ) + " ms" );
}
public void xtestSpeedCreateLegacyGetSubMenu()
{
SiteEntity site = createHugeSiteFixture( 5, 7, 4 );
siteXmlCreator = new SiteXmlCreator( menuItemAccessResolver, null );
siteXmlCreator.setMenuItemInBranch( oneMenuItemDeepInTheHugeMenu );
siteXmlCreator.setActiveMenuItem( oneMenuItemDeepInTheHugeMenu );
LOG.info( "Created huge site with " + keyCounter + " menu items" );
long start = System.currentTimeMillis();
siteXmlCreator.createLegacyGetSubMenu( site );
long end = System.currentTimeMillis();
LOG.info( "SiteXmlCreator.createLegacyGetSubMenu took " + ( end - start ) + " ms" );
}
public void xtestSpeedCreateLegacyGetMenuBranch()
{
SiteEntity site = createHugeSiteFixture( 5, 7, 4 );
siteXmlCreator = new SiteXmlCreator( menuItemAccessResolver, null );
siteXmlCreator.setMenuItemInBranch( oneMenuItemDeepInTheHugeMenu );
siteXmlCreator.setActiveMenuItem( oneMenuItemDeepInTheHugeMenu );
LOG.info( "Created huge site with " + keyCounter + " menu items" );
long start = System.currentTimeMillis();
siteXmlCreator.createLegacyGetMenuBranch( site );
long end = System.currentTimeMillis();
LOG.info( "SiteXmlCreator.createLegacyGetMenuBranch took " + ( end - start ) + " ms" );
}
/**
* Creates a site with the following menu items:<br/>
* <pre>
* 1
* 11
* 111
* 12
* 121
* 122
* 1221
* 2
* 21
* </pre>
*/
private SiteEntity createSiteFixture1()
{
site_1 = new SiteEntity();
site_1.setKey( 1 );
site_1.setLanguage( createLanguage( "1", "no", "Norwegian" ) );
mi_1 = createMenuItem( "1", "mi 1", null, site_1 );
mi_1_1 = createMenuItem( "11", "mi 1.1", mi_1, site_1 );
mi_1_1_1 = createMenuItem( "111", "mi 1.1.1", mi_1_1, site_1 );
mi_1_2 = createMenuItem( "12", "mi 1.2", mi_1, site_1 );
mi_1_2_1 = createMenuItem( "121", "mi 1.2.1", mi_1_2, site_1 );
mi_1_2_2 = createMenuItem( "122", "mi 1.2.2", mi_1_2, site_1 );
mi_1_2_2_1 = createMenuItem( "1221", "mi 1.2.2.1", mi_1_2_2, site_1 );
mi_2 = createMenuItem( "2", "mi 2", null, site_1 );
mi_2_1 = createMenuItem( "21", "mi 2.1", mi_2, site_1 );
Map<CaseInsensitiveString, MenuItemEntity> topMenuItems = new LinkedHashMap<CaseInsensitiveString, MenuItemEntity>();
topMenuItems.put( new CaseInsensitiveString( mi_1.getName() ), mi_1 );
topMenuItems.put( new CaseInsensitiveString( mi_2.getName() ), mi_2 );
site_1.setTopMenuItems( topMenuItems );
return site_1;
}
private int keyCounter = 0;
private SiteEntity createHugeSiteFixture( int firstRows, int rows, int depth )
{
SiteEntity site = new SiteEntity();
site.setKey( 1 );
site.setLanguage( createLanguage( "1", "no", "Norwegian" ) );
Map<CaseInsensitiveString, MenuItemEntity> topMenuItems = new LinkedHashMap<CaseInsensitiveString, MenuItemEntity>();
for ( int i = 1; i <= firstRows; i++ )
{
String key = String.valueOf( ++keyCounter );
String name = "mi " + key;
MenuItemEntity mi = createMenuItem( key, name, null, site, true );
topMenuItems.put( new CaseInsensitiveString( mi.getName() ), mi );
addMenuItems( site, mi, rows, depth );
}
site.setTopMenuItems( topMenuItems );
return site;
}
private void addMenuItems( SiteEntity site, MenuItemEntity parent, int totalChildren, int levels )
{
if ( levels <= 0 )
{
return;
}
for ( int i = 1; i <= totalChildren; i++ )
{
String key = String.valueOf( ++keyCounter );
String name = parent.getName() + "-" + key;
MenuItemEntity mi = createMenuItem( key, name, parent, site );
addMenuItems( site, mi, totalChildren, levels - 1 );
if ( i == 1 && levels == 1 )
{
oneMenuItemDeepInTheHugeMenu = mi;
}
}
}
}