Browse Source

Less logging + always search for serializable types the same way

tags/7.0.0.alpha2
Artur Signell 12 years ago
parent
commit
e4cedbca49

+ 3
- 6
src/com/vaadin/terminal/gwt/widgetsetutils/RpcProxyGenerator.java View File

@@ -36,9 +36,7 @@ public class RpcProxyGenerator extends Generator {
@Override
public String generate(TreeLogger logger, GeneratorContext ctx,
String requestedClassName) throws UnableToCompleteException {
Type logType = TreeLogger.INFO;

logger.log(TreeLogger.INFO, "Running RpcProxyGenerator", null);
logger.log(TreeLogger.DEBUG, "Running RpcProxyGenerator", null);

TypeOracle typeOracle = ctx.getTypeOracle();
assert (typeOracle != null);
@@ -64,13 +62,12 @@ public class RpcProxyGenerator extends Generator {
.getQualifiedSourceName());
composer.addImport(MethodInvocation.class.getCanonicalName());

logger.log(logType,
"Generating client proxy for remote service interface '"
+ requestedType.getQualifiedSourceName() + "'");
PrintWriter printWriter = ctx.tryCreate(logger,
composer.getCreatedPackage(),
composer.getCreatedClassShortName());
if (printWriter != null) {
logger.log(Type.INFO, "Generating client proxy for RPC interface '"
+ requestedType.getQualifiedSourceName() + "'");
SourceWriter writer = composer.createSourceWriter(ctx, printWriter);

// constructor

+ 6
- 7
src/com/vaadin/terminal/gwt/widgetsetutils/SerializerGenerator.java View File

@@ -57,10 +57,10 @@ public class SerializerGenerator extends Generator {
} catch (Exception e) {
logger.log(TreeLogger.ERROR, "SerializerGenerator failed for "
+ beanType.getQualifiedSourceName(), e);
throw new UnableToCompleteException();
}

// return the fully qualifed name of the class generated
logger.log(TreeLogger.INFO, "Generated Serializer class "
+ getFullyQualifiedSerializerClassName(beanType));
return getFullyQualifiedSerializerClassName(beanType);
}

@@ -135,7 +135,7 @@ public class SerializerGenerator extends Generator {
String getterName = findGetter(beanType, setterMethod);

if (getterName == null) {
logger.log(TreeLogger.WARN, "No getter found for " + fieldName
logger.log(TreeLogger.ERROR, "No getter found for " + fieldName
+ ". Serialization will likely fail");
}
// json.put("button",
@@ -166,7 +166,7 @@ public class SerializerGenerator extends Generator {
String fieldName = decapitalize(capitalizedFieldName);
JType setterParameterType = method.getParameterTypes()[0];

logger.log(Type.INFO, "* Processing field " + fieldName + " in "
logger.log(Type.DEBUG, "* Processing field " + fieldName + " in "
+ beanQualifiedSourceName + " (" + beanType.getName() + ")");

String jsonFieldName = "json" + capitalizedFieldName;
@@ -202,9 +202,8 @@ public class SerializerGenerator extends Generator {

// commit generated class
context.commit(logger, printWriter);
logger.log(Type.INFO,
"Done. (" + (new Date().getTime() - date.getTime()) / 1000
+ "seconds)");
logger.log(TreeLogger.INFO, "Generated Serializer class "
+ getFullyQualifiedSerializerClassName(beanType));

}


+ 26
- 28
src/com/vaadin/terminal/gwt/widgetsetutils/SerializerMapGenerator.java View File

@@ -70,6 +70,7 @@ public class SerializerMapGenerator extends Generator {
} catch (Exception e) {
logger.log(TreeLogger.ERROR,
"SerializerMapGenerator creation failed", e);
throw new UnableToCompleteException();
}
// return the fully qualifed name of the class generated
return packageName + "." + className;
@@ -163,7 +164,7 @@ public class SerializerMapGenerator extends Generator {

public Set<JClassType> findTypesNeedingSerializers(TypeOracle typeOracle,
TreeLogger logger) {
logger.log(Type.INFO, "Detecting serializable data types...");
logger.log(Type.DEBUG, "Detecting serializable data types...");

HashSet<JClassType> types = new HashSet<JClassType>();

@@ -180,7 +181,7 @@ public class SerializerMapGenerator extends Generator {
JClassType rpcType = typeOracle.findType(cls.getName());
JClassType[] serverRpcSubtypes = rpcType.getSubtypes();
for (JClassType type : serverRpcSubtypes) {
addMethodParameterTypes(type, types);
addMethodParameterTypes(type, types, logger);
}
}

@@ -188,28 +189,19 @@ public class SerializerMapGenerator extends Generator {
for (Object t : types.toArray()) {
findSubTypesNeedingSerializers((JClassType) t, types);
}
logger.log(Type.INFO, "Serializable data types: " + types.toString());
logger.log(Type.DEBUG, "Serializable data types: " + types.toString());

return types;
}

private void addMethodParameterTypes(JClassType classContainingMethods,
HashSet<JClassType> types) {
Set<JClassType> types, TreeLogger logger) {
for (JMethod method : classContainingMethods.getMethods()) {
if (method.getName().equals("initRpc")) {
continue;
}
for (JType type : method.getParameterTypes()) {
JClassType t = type.isClass();
JClassType interfaceType = type.isInterface();
if (t != null) {
types.add(t);
} else if (interfaceType != null) {
types.add(interfaceType);
} else {
System.err.println("Unknown method parameter type: "
+ type.getQualifiedSourceName());
}
addTypeIfNeeded(types, type);
}
}
}
@@ -221,22 +213,28 @@ public class SerializerMapGenerator extends Generator {
for (JMethod setterMethod : SerializerGenerator.getSetters(type)) {
// The one and only parameter for the setter
JType setterType = setterMethod.getParameterTypes()[0];
addTypeIfNeeded(serializableTypes, setterType);
}
}

if (serializableTypes.contains(setterType)) {
continue;
}
if (serializationHandledByFramework(setterType)) {
continue;
}
private void addTypeIfNeeded(Set<JClassType> serializableTypes, JType type) {
if (serializableTypes.contains(type)) {
return;
}
if (serializationHandledByFramework(type)) {
return;
}

JClassType setterTypeClass = setterType.isClass();
if (setterTypeClass != null) {
// setterTypeClass is null at least for List<String>. It is
// possible that we need to handle the cases somehow, for
// instance for List<MyObject>.
serializableTypes.add(setterTypeClass);
findSubTypesNeedingSerializers(type, serializableTypes);
}
if (serializableTypes.contains(type))
return;

JClassType typeClass = type.isClass();
if (typeClass != null) {
// setterTypeClass is null at least for List<String>. It is
// possible that we need to handle the cases somehow, for
// instance for List<MyObject>.
serializableTypes.add(typeClass);
findSubTypesNeedingSerializers(typeClass, serializableTypes);
}
}


Loading…
Cancel
Save