1 /*==================================================================== 2 3 Objectweb Explorer Framework 4 Copyright (C) 2000-2005 INRIA - USTL - LIFL - GOAL 5 Contact: openccm@objectweb.org 6 7 This library is free software; you can redistribute it and/or 8 modify it under the terms of the GNU Lesser General Public 9 License as published by the Free Software Foundation; either 10 version 2.1 of the License, or any later version. 11 12 This library is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 Lesser General Public License for more details. 16 17 You should have received a copy of the GNU Lesser General Public 18 License along with this library; if not, write to the Free Software 19 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 20 USA 21 22 Initial developer(s): Jerome Moroy, Philippe Merle. 23 Contributor(s): ______________________________________. 24 25 ==================================================================== 26 $Id: CodeDispatcher.java,v 1.2 2005/07/06 15:36:00 moroy Exp $ 27 ====================================================================*/ 28 29 package org.objectweb.util.explorer.core.code.lib; 30 31 import org.objectweb.fractal.api.NoSuchInterfaceException; 32 import org.objectweb.util.explorer.core.code.api.Code; 33 import org.objectweb.util.explorer.core.code.api.CodeDescription; 34 import org.objectweb.util.explorer.core.code.api.CodeProvider; 35 import org.objectweb.util.explorer.core.common.lib.BindingFeature; 36 37 /** 38 * 39 * 40 * @author <a HREF="mailto:Jerome.Moroy@lifl.fr">Jérôme Moroy</a>, 41 * <a HREF="mailto:Philippe.Merle@lifl.fr">Philippe Merle</a>. 42 * 43 * @version 0.1 44 */ 45 public class CodeDispatcher 46 extends BindingFeature 47 implements CodeProvider 48 { 49 50 //================================================================== 51 // 52 // Internal States. 53 // 54 // ================================================================== 55 56 // ================================================================== 57 // 58 // Constructors. 59 // 60 // ================================================================== 61 62 // ================================================================== 63 // 64 // No internal method. 65 // 66 // ================================================================== 67 68 // ================================================================== 69 // 70 // Public methods for BindingFeature abstract class. 71 // 72 // ================================================================== 73 74 /* (non-Javadoc) 75 * @see org.objectweb.util.explorer.core.common.lib.BindingFeature#clientFc() 76 */ 77 public String[] clientFc() { 78 return new String[]{CodeProvider.CLIENT_CODE_PROVIDER}; 79 } 80 81 // ================================================================== 82 // 83 // Public methods for CodeProvider interface. 84 // 85 // ================================================================== 86 87 /** 88 * A syntaxic pattern has been defined in order to dispatch towards the appropriate CodeProvider component. 89 * Indeed, the name of the binding between the dispatcher and the CodeProvider is the following:<br> 90 *     <code>CodeProvider.CLIENT_CODE_PROVIDER + "-" + codeDesc.getLanguage().toLowerCase()</code> 91 * @see org.objectweb.util.explorer.core.code.api.CodeProvider#getCode(org.objectweb.util.explorer.core.code.api.CodeDescription) 92 */ 93 public Code getCode(CodeDescription codeDesc) { 94 try { 95 CodeProvider codeProvider = (CodeProvider)lookupFc(CodeProvider.CLIENT_CODE_PROVIDER + "-" + codeDesc.getLanguage().toLowerCase()); 96 return codeProvider.getCode(codeDesc); 97 } catch (NoSuchInterfaceException e) { 98 e.printStackTrace(); 99 } 100 return null; 101 } 102 103 } 104