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); } }
SBase base = (SBase) object; ObjectNode jsonObject = OBJECT_MAPPER.createObjectNode(); jsonObject.put("__type", base.getSClass().getSimpleName()); for (SField field : base.getSClass().getAllFields()) { jsonObject.set(field.getName(), toJson(base.sGet(field)));
@SuppressWarnings({ "unchecked", "rawtypes" }) public Message convertSObjectToProtocolBuffersObject(SBase object, SClass definedType) throws ConvertException { Builder builder = null; MessageDescriptorContainer messageDescriptor = protocolBuffersMetaData.getMessageDescriptor(definedType.getSimpleName()); if (messageDescriptor == null) { throw new ConvertException("No message descriptor found with name " + definedType.getSimpleName()); builder.setField(messageDescriptor.getField("__actual_type"), sClass.getSimpleName()); builder.setField(messageDescriptor.getField("__" + sClass.getSimpleName()), convertSObjectToProtocolBuffersObject(object, sClass));
newInstance = sClass.newInstance(); } else if (fieldDescriptor.getName().startsWith("__")) { if (fieldDescriptor.getName().substring(2).equals(sClass.getSimpleName())) { subTypeMessage = (Message) message.getField(fieldDescriptor);
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; }