
<%
/**
 * <copyright>
 *
 * Copyright (c) 2010 Ed Merks and others.
 * 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: 
 *   Ed Merks - Initial API and implementation
 *
 * </copyright>
 */
%>
<%GenModel genModel = (GenModel)argument; /* Trick to import java.util.* without warnings */Iterator.class.getName();%>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<%@ egf:patternCall patternId="platform:/plugin/org.eclipse.egf.emf.pattern.base/egf/EMF_Pattern_Base.fcore#LogicalName=org.eclipse.egf.emf.pattern.base.HeaderXml" args="parameter:argument"%>
<web-app>
  <servlet>
    <servlet-name>uriServlet</servlet-name>
    <servlet-class>org.eclipse.emf.server.ecore.resource.URIServiceImpl</servlet-class>
  </servlet>
  
  <servlet-mapping>
    <servlet-name>uriServlet</servlet-name>
    <url-pattern>/<%=genModel.getQualifiedEditorModuleName()%>/uriService</url-pattern>
  </servlet-mapping>

  <welcome-file-list>
    <welcome-file><%=genModel.getEditorHomePageName()%>.html</welcome-file>
  </welcome-file-list>
</web-app>
