001 package org.mesopotamia.lang.java; 002 003 import org.mesopotamia.MesopotamiaException; 004 import org.mesopotamia.NodeData; 005 import org.mesopotamia.RepositoryLanguage; 006 import org.mesopotamia.Scan; 007 import org.mesopotamia.lang.java.ref.MethodInfo; 008 import org.mesopotamia.lang.java.ref.TypeInfo; 009 import org.mesopotamia.lang.java.ref.TypeSpecInfo; 010 011 public class ConstructorDefinition extends Operation implements MethodInfo { 012 013 public ConstructorDefinition(NodeData xData, Class<?> context, Scan scan, 014 RepositoryLanguage language, Object environment) throws MesopotamiaException { 015 super(xData, context, scan, language, environment); 016 017 // Select attributes 018 019 } 020 021 public String getFcn() { 022 TypeInfo dt = getDeclaringType(); 023 if (dt==null) { 024 return null; 025 } 026 StringBuffer ret = new StringBuffer(); 027 ret.append(MethodDefinition.CONSTRUCTOR_NAME); 028 ret.append("("); 029 boolean first = true; 030 for (TypeSpecInfo pd: getParameterTypes()) { 031 if (pd==null) { 032 return null; 033 } 034 if (first) { 035 first = false; 036 } else { 037 ret.append(", "); 038 } 039 TypeInfo pTypeInfo = pd.getTypeInfo(); 040 if (pTypeInfo == null) { 041 return null; 042 } 043 ret.append(pTypeInfo.getFcn()); 044 for (int i=0; i<pd.getDimensions(); ++i) { 045 ret.append(TypeSpecInfo.ARRAY_BRACKETS); 046 } 047 } 048 ret.append(")"); 049 first = true; 050 for (TypeInfo et: getExceptionTypes()) { 051 if (et==null) { 052 return null; 053 } 054 if (first) { 055 ret.append(" throws "); 056 first = false; 057 } else { 058 ret.append(", "); 059 } 060 ret.append(et.getFcn()); 061 } 062 return ret.toString(); 063 } 064 065 public TypeSpecInfo getReturnType() { 066 return new TypeSpecInfo() { 067 068 public int getDimensions() { 069 return 0; 070 } 071 072 public TypeInfo getTypeInfo() { 073 return getDeclaringType(); 074 } 075 076 }; 077 } 078 079 public String getName() { 080 return MethodDefinition.CONSTRUCTOR_NAME; 081 } 082 083 }