001: /**
002: * JOnAS: Java(TM) Open Application Server
003: * Copyright (C) 1999-2004 Bull S.A.
004: * Contact: jonas-team@objectweb.org
005: *
006: * This library is free software; you can redistribute it and/or
007: * modify it under the terms of the GNU Lesser General Public
008: * License as published by the Free Software Foundation; either
009: * version 2.1 of the License, or any later version.
010: *
011: * This library is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * Lesser General Public License for more details.
015: *
016: * You should have received a copy of the GNU Lesser General Public
017: * License along with this library; if not, write to the Free Software
018: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
019: * USA
020: *
021: * --------------------------------------------------------------------------
022: * $Id: VcParam.java 5468 2004-09-21 14:28:46Z joaninh $
023: * --------------------------------------------------------------------------
024: */package org.objectweb.jonas_ejb.genic;
025:
026: import org.objectweb.jonas_ejb.deployment.api.BeanDesc;
027: import org.objectweb.jonas_ejb.lib.JavaType;
028: import org.objectweb.jonas_ejb.lib.JormType;
029:
030: /**
031: * This class is the "Velocity context" for a parameter of a finder/select method for CMP2 only,
032: * used in the Velocity Templates.
033: * @author Helene Joanin : Initial developer
034: */
035: public class VcParam {
036:
037: /**
038: * Type's name of the parameter
039: */
040: private String mTypeName = null;
041:
042: /**
043: * JORM type's name of the parameter
044: */
045: private String mJormTypeName = null;
046:
047: /**
048: * true if the parameter is a local bean
049: */
050: private boolean mIsEjbLocal = false;
051: /**
052: * In case the parameter is a local bean, name of this local bean
053: */
054: private String mEjbName = null;
055:
056: /**
057: * VcParam Constructor
058: * @param type parameter class
059: * @param dd bean descriptor
060: */
061: VcParam(Class type, BeanDesc dd) {
062: mTypeName = JavaType.getName(type);
063: mJormTypeName = JormType.getPTypeDef(type, false);
064: mIsEjbLocal = javax.ejb.EJBLocalObject.class
065: .isAssignableFrom(type);
066: if (mIsEjbLocal) {
067: BeanDesc bdp = dd.getDeploymentDesc()
068: .getBeanDescWithLocalInterface(mTypeName);
069: if (bdp == null) {
070: throw new Error(
071: "VcParam: Cannot get the BeanDesc associated to the interface local '"
072: + mTypeName + "'");
073: }
074: mEjbName = bdp.getEjbName();
075: }
076: }
077:
078: /**
079: * @return Returns the type's name of the parameter
080: */
081: public String getTypeName() {
082: return mTypeName;
083: }
084:
085: /**
086: * @return Returns the JORM type's name of the parameter
087: */
088: public String getJormType() {
089: return mJormTypeName;
090: }
091:
092: /**
093: * @return Returns true if the parameter is a local bean
094: */
095: public boolean isEjbLocal() {
096: return mIsEjbLocal;
097: }
098:
099: /**
100: * @return If the parameter is a local bean, returns the name of this local bean
101: */
102: public String getEjbName() {
103: if (!isEjbLocal()) {
104: throw new Error(
105: "VcParam.getEjbName(): No BeanDesc associated to the param '"
106: + mTypeName + "'");
107: }
108: return mEjbName;
109: }
110:
111: }
|