bool simulatorResourceAttributeToCpp(JNIEnv *env, jobject jAttribute, SimulatorResourceModel::Attribute &attribute) { if (!jAttribute) return false; static jfieldID nameFID = env->GetFieldID(gSimulatorClassRefs.simulatorResourceAttributeCls, "mName", "Ljava/lang/String;"); static jfieldID valueFID = env->GetFieldID(gSimulatorClassRefs.simulatorResourceAttributeCls, "mValue", "Lorg/oic/simulator/AttributeValue;"); static jfieldID propertyFID = env->GetFieldID(gSimulatorClassRefs.simulatorResourceAttributeCls, "mProperty", "Lorg/oic/simulator/AttributeProperty;"); jstring jAttributeName = (jstring) env->GetObjectField(jAttribute, nameFID); jobject jAttributeValue = env->GetObjectField(jAttribute, valueFID); jobject jAttributeProperty = env->GetObjectField(jAttribute, propertyFID); if (!jAttributeName || !jAttributeValue) return false; JniString attrName(env, jAttributeName); SimulatorResourceModel::ValueVariant value = JniAttributeValue::toCpp(env, jAttributeValue); attribute.setName(attrName.get()); attribute.setValue(value); if (jAttributeProperty) { SimulatorResourceModel::AttributeProperty property = JniAttributeProperty::toCpp(env, jAttributeProperty); attribute.setProperty(property); } return true; }