Пример #1
0
MojErr MojService::CategoryHandler::addMethod(const MojChar* methodName, Callback callback, bool pub, const MojChar* schemaJson)
{
	MojAssert(methodName && callback);

	MojString str;
	MojErr err = str.assign(methodName);
	MojErrCheck(err);
	MojRefCountedPtr<MojSchema> schema;
	if (schemaJson) {
		MojObject schemaObj;
		err = schemaObj.fromJson(schemaJson);
		MojErrCheck(err);

		// add implicit $activity property
		MojObject properties;
		schemaObj.get(MojSchema::PropertiesKey, properties);
		MojObject activityProp;
		err = activityProp.putBool(MojSchema::OptionalKey, true);
		MojErrCheck(err);
		err = properties.put(_T("$activity"), activityProp);
		MojErrCheck(err);
		err = schemaObj.put(MojSchema::PropertiesKey, properties);
		MojErrCheck(err);

		schema.reset(new MojSchema);
		MojAllocCheck(schema.get());
		err = schema->fromObject(schemaObj);
		MojErrCheck(err);
	}
	MojAssert(!m_callbackMap.contains(str));
	err = m_callbackMap.put(str, CallbackInfo(callback, schema.get(), pub));
	MojErrCheck(err);

	return MojErrNone;
}
Пример #2
0
MojErr MojDbIndex::createExtractor(const MojObject& propObj, MojRefCountedPtr<MojDbExtractor>& extractorOut)
{
    LOG_TRACE("Entering function %s", __FUNCTION__);
	MojAssert(!isOpen());

	// type
	MojString type;
	bool found = false;
	MojErr err = propObj.get(TypeKey, type, found);
	MojErrCheck(err);
	if (found && type == MultiKey) {
		extractorOut.reset(new MojDbMultiExtractor);
		MojAllocCheck(extractorOut.get());
	} else {
		extractorOut.reset(new MojDbPropExtractor);
		MojAllocCheck(extractorOut.get());
	}
	err = extractorOut->fromObject(propObj, m_locale);
	MojErrCheck(err);

	return MojErrNone;
}