private Pair<String, String> getModelNamespaceUriPrefix(M2Model model) { ParameterCheck.mandatory("model", model); List<M2Namespace> namespaces = model.getNamespaces(); if (namespaces.isEmpty()) { throw new CustomModelException.InvalidNamespaceException(MSG_NAMESPACE_NOT_EXISTS, new Object[] { model.getName() }); } if (namespaces.size() > 1) { throw new CustomModelException.InvalidNamespaceException(MSG_NAMESPACE_MANY_EXIST, new Object[] { model.getName() }); } M2Namespace ns = namespaces.iterator().next(); return new Pair<>(ns.getUri(), ns.getPrefix()); }
private void checkCircularDependency(ModelDefinition model, M2Model existingModel, String parentPrefixedName) throws AlfrescoRuntimeException { for (NamespaceDefinition importedNamespace : model.getImportedNamespaces()) { ModelDefinition md = null; if ((md = dictionaryService.getModelByNamespaceUri(importedNamespace.getUri())) != null) { if (existingModel.getNamespace(importedNamespace.getUri()) != null) { throw new AlfrescoRuntimeException("Failed to validate model update - found circular dependency. You can't set parent " + parentPrefixedName + " as it's model already depends on " + existingModel.getName()); } checkCircularDependency(md, existingModel, parentPrefixedName); } } }
public void notifyDynamicModelLoaded(DynamicModelInfo entry) { if (onLoadDynamicModelDelegate == null) { onLoadDynamicModelDelegate = policyComponent.registerClassPolicy(DynamicModelPolicies.OnLoadDynamicModel.class); } DynamicModelPolicies.OnLoadDynamicModel policy = onLoadDynamicModelDelegate.get(ContentModel.TYPE_CONTENT); try { policy.onLoadDynamicModel(entry.model, entry.nodeRef); } catch (RuntimeException e) { // similar to "loadModel" method // note: skip with warning - to allow server to start, and hence allow the possibility of fixing the broken model(s) // do print the stacktrace so there is some information about what went wrong, in order to fix it logger.warn("Failed to notify dynamic model loaded'" + (entry.model != null ? entry.model.getName() : "null") + "' : " + e, e); } }
private Pair<String, String> getModelNamespaceUriPrefix(M2Model model) { ParameterCheck.mandatory("model", model); List<M2Namespace> namespaces = model.getNamespaces(); if (namespaces.isEmpty()) { throw new CustomModelException.InvalidNamespaceException(MSG_NAMESPACE_NOT_EXISTS, new Object[] { model.getName() }); } if (namespaces.size() > 1) { throw new CustomModelException.InvalidNamespaceException(MSG_NAMESPACE_MANY_EXIST, new Object[] { model.getName() }); } M2Namespace ns = namespaces.iterator().next(); return new Pair<>(ns.getUri(), ns.getPrefix()); }
private void checkCircularDependency(ModelDefinition model, M2Model existingModel, String parentPrefixedName) throws AlfrescoRuntimeException { for (NamespaceDefinition importedNamespace : model.getImportedNamespaces()) { ModelDefinition md = null; if ((md = dictionaryService.getModelByNamespaceUri(importedNamespace.getUri())) != null) { if (existingModel.getNamespace(importedNamespace.getUri()) != null) { throw new AlfrescoRuntimeException("Failed to validate model update - found circular dependency. You can't set parent " + parentPrefixedName + " as it's model already depends on " + existingModel.getName()); } checkCircularDependency(md, existingModel, parentPrefixedName); } } }
protected List<CustomModelDefinition> getAllCustomModels() { List<CustomModelDefinition> result = new ArrayList<>(); Collection<QName> models = dictionaryDAO.getModels(true); List<String> dictionaryModels = new ArrayList<>(); for (QName model : models) { dictionaryModels.add(model.toPrefixString()); } List<CompiledModel> compiledModels = getAllCustomM2Models(false); if (compiledModels.size() > 0) { for (CompiledModel model : compiledModels) { // check against models loaded in dictionary boolean isActive = false; if (dictionaryModels.contains(model.getM2Model().getName())) { isActive = true; } result.add(new CustomModelDefinitionImpl(model, isActive, dictionaryService)); } } return result; }
logger.trace("onDictionaryInit: "+model.getName()+" ("+dictionaryModel+")");
protected List<CustomModelDefinition> getAllCustomModels() { List<CustomModelDefinition> result = new ArrayList<>(); Collection<QName> models = dictionaryDAO.getModels(true); List<String> dictionaryModels = new ArrayList<>(); for (QName model : models) { dictionaryModels.add(model.toPrefixString()); } List<CompiledModel> compiledModels = getAllCustomM2Models(false); if (compiledModels.size() > 0) { for (CompiledModel model : compiledModels) { // check against models loaded in dictionary boolean isActive = false; if (dictionaryModels.contains(model.getM2Model().getName())) { isActive = true; } result.add(new CustomModelDefinitionImpl(model, isActive, dictionaryService)); } } return result; }
logger.trace("onDictionaryInit: "+model.getName()+" ("+dictionaryModel+")");
public void notifyDynamicModelLoaded(DynamicModelInfo entry) { if (onLoadDynamicModelDelegate == null) { onLoadDynamicModelDelegate = policyComponent.registerClassPolicy(DynamicModelPolicies.OnLoadDynamicModel.class); } DynamicModelPolicies.OnLoadDynamicModel policy = onLoadDynamicModelDelegate.get(ContentModel.TYPE_CONTENT); try { policy.onLoadDynamicModel(entry.model, entry.nodeRef); } catch (RuntimeException e) { // similar to "loadModel" method // note: skip with warning - to allow server to start, and hence allow the possibility of fixing the broken model(s) // do print the stacktrace so there is some information about what went wrong, in order to fix it logger.warn("Failed to notify dynamic model loaded'" + (entry.model != null ? entry.model.getName() : "null") + "' : " + e, e); } }
private QName loadModel(final M2Model model) { if (logger.isDebugEnabled()) { logger.debug("Loading model: "+model.getName()); } final DictionaryDAO dictionaryDAO = getDictionaryDAO(); QName modelQName = dictionaryDAO.putModel(model); loadedModels.add(modelQName); return modelQName; }
QName modelQName = QName.createQName( model.getModel().getName(), namespaceDAO); jsonModel.put("name", modelQName.toString()); jsonModel.put("checksum", model.getChecksum());
String modelName = model.getName(); if (loadedModels.contains(modelName) == false)
String modelName = model.getName(); if (loadedModels.contains(modelName) == false)
@Override public CustomModelDefinition createCustomModel(M2Model m2Model, boolean activate) { ParameterCheck.mandatory("m2Model", m2Model); String modelName = m2Model.getName(); int colonIndex = modelName.indexOf(QName.NAMESPACE_PREFIX); final String modelFileName = (colonIndex == -1) ? modelName : modelName.substring(colonIndex + 1); if (isModelExists(modelFileName)) { throw new CustomModelException.ModelExistsException(MSG_NAME_ALREADY_IN_USE, new Object[] { modelFileName }); } // Validate the model namespace URI validateModelNamespaceUri(getModelNamespaceUriPrefix(m2Model).getFirst()); // Validate the model namespace prefix validateModelNamespacePrefix(getModelNamespaceUriPrefix(m2Model).getSecond()); // Return the created model definition CompiledModel compiledModel = createUpdateModel(modelFileName, m2Model, activate, MSG_CREATE_MODEL_ERR, false); CustomModelDefinition modelDef = new CustomModelDefinitionImpl(compiledModel, activate, dictionaryService); if (logger.isDebugEnabled()) { logger.debug(modelFileName + " model has been created."); } return modelDef; }
modelName = model.getName();
modelName = model.getName();
@Override public CustomModelDefinition createCustomModel(M2Model m2Model, boolean activate) { ParameterCheck.mandatory("m2Model", m2Model); String modelName = m2Model.getName(); int colonIndex = modelName.indexOf(QName.NAMESPACE_PREFIX); final String modelFileName = (colonIndex == -1) ? modelName : modelName.substring(colonIndex + 1); if (isModelExists(modelFileName)) { throw new CustomModelException.ModelExistsException(MSG_NAME_ALREADY_IN_USE, new Object[] { modelFileName }); } // Validate the model namespace URI validateModelNamespaceUri(getModelNamespaceUriPrefix(m2Model).getFirst()); // Validate the model namespace prefix validateModelNamespacePrefix(getModelNamespaceUriPrefix(m2Model).getSecond()); // Return the created model definition CompiledModel compiledModel = createUpdateModel(modelFileName, m2Model, activate, MSG_CREATE_MODEL_ERR, false); CustomModelDefinition modelDef = new CustomModelDefinitionImpl(compiledModel, activate, dictionaryService); if (logger.isDebugEnabled()) { logger.debug(modelFileName + " model has been created."); } return modelDef; }
assertEquals("Unexpected number of removed models", 0, diffResults1.getRemovedModels().size()); AlfrescoModelDiff diff = diffResults1.getNewModels().get(0); assertEquals("Unexpected model name change", QName.createQName(testModel.getName(), namespaceService).toString(), diff.getModelName()); Long testModelChecksum = tracker.getChecksum(QName.createQName(testModel.getName(), namespaceService)); assertNotNull("", testModelChecksum); assertEquals("Unexpected changed model name", QName.createQName(testModel.getName(), namespaceService).toString(), changedModel.getModelName()); assertNotNull("", changedModel.getOldChecksum().longValue()); dictionaryDAO.removeModel(QName.createQName(testModel.getName(), namespaceService));