/******************************************************************************* * Copyright (c) 2001, 2005 IBM Corporation 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: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.jst.j2ee.internal.model.translator.common; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.jst.j2ee.common.CommonPackage; import org.eclipse.jst.j2ee.internal.xml.DeploymentDescriptorXmlMapperI; import org.eclipse.wst.common.internal.emf.resource.IDTranslator; import org.eclipse.wst.common.internal.emf.resource.Translator; public class EnvEntryTranslator extends Translator implements DeploymentDescriptorXmlMapperI { private boolean isJ2EE14; private static Translator[] children; private static Translator[] reorderedChildren; //Hacks because of inconsistencies in the servlet spec boolean typeBeforeValue = true; /** * Constructor for EnvEntryTranslator. * @param domNameAndPath * @param aFeature */ public EnvEntryTranslator(EStructuralFeature aFeature, boolean writeTypeBeforeValue, boolean isJ2EE14) { super(ENV_ENTRY, aFeature); typeBeforeValue = writeTypeBeforeValue; this.isJ2EE14 = isJ2EE14; } /** * @see com.ibm.etools.emf2xml.impl.Translator#getChildren() */ @Override public Translator[] getChildren(Object obj, int versionID) { //Hava to you create a different one each time children = createChildren(); setReorderedChildren(); if (typeBeforeValue) return children; return reorderedChildren; } protected Translator[] createChildren() { CommonPackage ePackageCommon = CommonPackage.eINSTANCE; Translator descriptionTranslator; if (isJ2EE14) descriptionTranslator = CommonTranslators.createDescriptionTranslator(ePackageCommon.getEnvEntry_Descriptions()); else descriptionTranslator = new Translator(DESCRIPTION, ePackageCommon.getEnvEntry_Description()); return new Translator[] { IDTranslator.INSTANCE, descriptionTranslator, new Translator(ENV_ENTRY_NAME, ePackageCommon.getEnvEntry_Name()), new EnvEntryTypeTranslator(), new Translator(ENV_ENTRY_VALUE, ePackageCommon.getEnvEntry_Value()) }; } protected void setReorderedChildren() { reorderedChildren = new Translator[children.length]; System.arraycopy(children, 0, reorderedChildren, 0, children.length); Translator temp = reorderedChildren[3]; reorderedChildren[3] = reorderedChildren[4]; reorderedChildren[4] = temp; } }