Пример #1
0
  private IGosuClass createJavaProxyImmediately(IJavaTypeInternal type) {
    IGosuClassInternal gsAdapterClass;

    if (type.getEnclosingType() != null) {
      // Ensure enclosing type is proxied; it contains the gosu source for the inner type
      IGosuClass outerProxy =
          (IGosuClass)
              TypeSystem.getByFullName(
                  getProxyName((IJavaType) TypeLord.getOuterMostEnclosingClass(type)));
      outerProxy.getInnerClasses();
      if (!outerProxy.isCompilingDeclarations()) {
        gsAdapterClass =
            (IGosuClassInternal)
                outerProxy.getInnerClass(
                    type.getRelativeName().substring(type.getRelativeName().indexOf('.') + 1));
        if (gsAdapterClass == null) {
          TypeSystem.refresh((ITypeRef) outerProxy, true);
          gsAdapterClass =
              (IGosuClassInternal)
                  outerProxy.getInnerClass(
                      type.getRelativeName().substring(type.getRelativeName().indexOf('.') + 1));
        }
      } else {
        return null;
      }
    } else {
      if (type.isInterface()) {
        gsAdapterClass = (IGosuClassInternal) createJavaInterfaceProxy(type);
      } else {
        gsAdapterClass = (IGosuClassInternal) createJavaClassProxy(type);
      }
    }

    type.setAdapterClass(gsAdapterClass);

    gsAdapterClass.setJavaType(type);
    return gsAdapterClass;
  }