@Override public int compareTo(SClass arg0) { return name.compareTo(arg0.getName()); } }
public void addSClass(SClass sClass) { sClasses.put(sClass.getName(), sClass); }
public SBase newInstance() { if (sConstructor == null) { throw new RuntimeException("No constructor for " + getName() + "!"); } return (SBase) sConstructor.newInstance(); }
public ObjectNode toJson(ObjectMapper OBJECT_MAPPER) { ObjectNode result = OBJECT_MAPPER.createObjectNode(); result.put("name", getName()); result.put("simpleName", getSimpleName()); result.put("simpleType", getSimpleType().name()); ArrayNode fieldsJson = OBJECT_MAPPER.createArrayNode(); for (SField field : ownFields.values()) { fieldsJson.add(field.toJson(OBJECT_MAPPER)); } result.set("fields", fieldsJson); return result; }
public void addType(SClass type) { types.put(type.getSimpleName(), type); types.put(type.getName(), type); addRelatedTypes(type.getInstanceClass()); }
public void addType(final Class<?> type) { if (!types.containsKey(type.getSimpleName())) { // TODO reflective constructor use can be slow SClass sClass = new SClass(this, type, new SConstructor(){ @Override public Object newInstance() { try { return type.getConstructors()[0].newInstance(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } return null; }}); types.put(sClass.getSimpleName(), sClass); types.put(sClass.getName(), sClass); addRelatedTypes(type); } }
private void genProtocolBuffersToServiceInterface(PrintWriter out, String sourceName, String targetName, SClass sType, SMethod method) { for (SField field : sType.getAllFields()) { if (sType.getInstanceClass().isAssignableFrom(List.class)) { } else if (sType.isDate()) { out.println("\t\t\t\t" + targetName + ".set" + field.getName() + "(new Date(" + sourceName + "." + method.getName() + "()));"); } else if (sType.isClass()) { out.println("\t\t\t\t" + targetName + ".set" + field.getName() + "(Class.forName(" + sourceName + "." + method.getName() + "()));"); } else if (sType.isDataHandler()) { out.println("\t\t\t\t" + targetName + ".setFile(new DataHandler(new ByteArrayDataSource(" + sourceName + ".getFile().toByteArray(), \"\")));"); } else if (sType.isEnum()) { out.println("\t\t\t\t" + targetName + ".set" + field.getName() + "(" + method.getReturnType().getName().replace("$", ".") + ".values()[" + sourceName + "." + method.getName() + "().ordinal()]);"); } else { out.println("\t\t\t\t" + targetName + ".set" + field.getName() + "(" + sourceName + "." + method.getName() + "());"); } } }
private void genServiceInterfaceToProtocolBuffers(PrintWriter out, String sourceName, String targetName, SClass parameterType) { for (SField field : parameterType.getAllFields()) { SClass fieldType = field.getType(); SClass fieldClass = fieldType; if (fieldClass.isList()) { out.println("\t\t\tfor (" + fieldType.getName() + " o : " + sourceName + "." + field.getName() + "()) {"); out.println("\t\t\t\t" + targetName + ".add" + field.getName() + "(o);"); out.println("\t\t\t}"); } else if (fieldClass.isDate()) { out.println("\t\t\t" + targetName + ".set" + field.getName() + "(" + sourceName + "." + field.getName() + "().getTime());"); } else if (fieldType.getInstanceClass() == byte[].class) { out.println("\t\t\t" + targetName + ".set" + field.getName() + "(ByteString.copyFrom(" + sourceName + "." + field.getName() + "()));"); } else if (fieldClass.isEnum()) { out.println("\t\t\t" + targetName + ".set" + field.getName() + "(" + fieldType.getInstanceClass().getSimpleName() + ".values()[" + sourceName + "." + field.getName() + "().ordinal()]);"); } else { out.println("\t\t\t" + targetName + ".set" + field.getName() + "(" + sourceName + "." + field.getName() + "());"); } } }
out.print("\tpublic void " + sMethod.getName() + "("); } else { fullResultType = sMethod.getReturnType().getName(); if (sMethod.isAggregateReturnType()) { fullResultType = sMethod.getReturnType().getName() + "<" + sMethod.getGenericReturnType().getName() + ">"; out.print(parameter.getType().getName() + "<" + parameter.getGenericType().getName() + "> " + parameter.getName() + (parameter.isLast() ? "" : ", ")); } else { out.print(parameter.getType().getName() + " " + parameter.getName() + (parameter.isLast() ? "" : ", ")); out.println("\t\t\t" + responseClassName + " response = service." + sMethod.getName() + "(rpcController, request);"); if (sMethod.isListReturnType()) { out.println("\t\t\t" + fullResultType + " realResult = new ArrayList<" + sMethod.getGenericReturnType().getName() + ">();"); String fullTypeName = sMethod.getGenericReturnType().getName(); if (sMethod.getGenericReturnType().isPrimitive() || sMethod.getGenericReturnType().getInstanceClass() == String.class) { } else { fullTypeName = "ProtocolBuffersService." + sMethod.getGenericReturnType().getName(); out.println("\t\t\t\trealResult.add(val);"); } else if (sMethod.getGenericReturnType().isEnum()) { out.println("\t\t\t\trealResult.add(" + sMethod.getGenericReturnType().getName() + ".values()[val.ordinal()]);"); } else { out.println("\t\t\t\t" + sMethod.getGenericReturnType().getName() + " v = " + genInitializerCode(sMethod.getGenericReturnType().getInstanceClass()) + ";"); genProtocolBuffersToServiceInterface(out, "val", "v", sMethod.getGenericReturnType(), sMethod); out.println("\t\treturn realResult;"); } else if (sMethod.getGenericReturnType().isSet()) { out.println("\t\t\t" + fullResultType + " realResult = new HashSet<" + sMethod.getGenericReturnType().getName() + ">();");
SField field = newInstance.getSClass().getField(fieldDescriptor.getName()); if (field == null) { throw new ConvertException("No field on " + sClass.getName() + " with name " + fieldDescriptor.getName()); throw new ConvertException("Field " + sClass.getName() + "." + fieldDescriptor.getName() + " should have list value");
public SServiceType createSServiceType(SClass sClass, boolean recurse) throws UserException, ServerException { if (sClass == null) { return null; } SServiceType sServiceType = new SServiceType(); sServiceType.setName(sClass.getName()); sServiceType.setSimpleName(sClass.getSimpleName()); sServiceType.setSimpleType(SServiceSimpleType.valueOf(sClass.getSimpleType().name())); for (SField field : sClass.getOwnFields()) { SServiceField sServiceField = new SServiceField(); sServiceField.setName(field.getName()); if (recurse) { sServiceField.setType(createSServiceType(field.getType(), recurse)); sServiceField.setGenericType(createSServiceType(field.getGenericType(), recurse)); } sServiceField.setDoc(field.getDoc()); sServiceType.getFields().add(sServiceField); } return sServiceType; }