/**
  * getParentType - return the Class which corresponds to our parent JavaClass we're going to do
  * this a lot, so cache it.
  */
 protected Class getParentType() {
   if (parentType == null) {
     Field targetField = (Field) getTarget();
     JavaClass parentJavaClass = targetField.getJavaClass();
     JavaClassJDKAdaptor pa =
         (JavaClassJDKAdaptor)
             EcoreUtil.getAdapter(parentJavaClass.eAdapters(), ReadAdaptor.TYPE_KEY);
     if (pa != null) parentType = pa.getSourceType();
   }
   return parentType;
 }
 /** @return */
 private EClassifier getKeyFieldTypeFromKeyClass() {
   if (isKey()) {
     JavaClass key = getCMPEntity().getPrimaryKey();
     if (key != null
         && key.getQualifiedName() != null
         && !key.getQualifiedName().startsWith("java.lang")) { // $NON-NLS-1$
       Field field = key.getFieldExtended(getName());
       if (field != null) return field.getEType();
     } else return key;
   }
   return null;
 }
 /**
  * @generated This field/method will be replaced during code generation The value of the type
  *     element describes the Java type of the attributes value. For static values (those
  *     determined at translation time) the type is always java.lang.String.
  */
 public JavaClass getType() {
   if (type != null && type.eIsProxy()) {
     InternalEObject oldType = (InternalEObject) type;
     type = (JavaClass) eResolveProxy(oldType);
     if (type != oldType) {
       if (eNotificationRequired())
         eNotify(
             new ENotificationImpl(
                 this,
                 Notification.RESOLVE,
                 TaglibPackage.JSP_TAG_ATTRIBUTE__TYPE,
                 oldType,
                 type));
     }
   }
   return type;
 }
 protected Field findExistingField() {
   JavaClass javaClass = getEjbClass();
   if (javaClass != null) return javaClass.getFieldExtended(getName());
   return null;
 }