Hi all.I've got a custom data model I want to add to Alfresco Explorer. I've got a the model file called groupITModel.xml and the group-it-context.xml file which loads it up. I placed them both in the tomcat/webapps/WEB-INF/classes/alfresco/extension folder, started Alfresco and got the following error:14:11:40,459 INFO [alfresco.config.JndiPropertiesFactoryBean] Loading properties file from class path resource [alfresco/repository.properties]
14:11:40,459 INFO [alfresco.config.JndiPropertiesFactoryBean] Loading properties file from class path resource [alfresco/domain/transaction.properties]
14:11:40,459 INFO [alfresco.config.JndiPropertiesFactoryBean] Loading properties file from file [E:\Alfresco\tomcat\webapps\alfresco\WEB-INF\classes\alfresco\module\test\alfresco-global.properties]
14:11:40,459 INFO [alfresco.config.JndiPropertiesFactoryBean] Loading properties file from file [E:\Alfresco\tomcat\webapps\alfresco\WEB-INF\classes\alfresco\module\tests\alfresco-global.properties]
14:11:40,459 INFO [alfresco.config.JndiPropertiesFactoryBean] Loading properties file from URL [file:/E:/Alfresco/tomcat/webapps/alfresco/WEB-INF/classes/alfresco-global.properties]
14:11:40,537 INFO [alfresco.config.JndiPropertyPlaceholderConfigurer] Loading properties file from class path resource [alfresco/alfresco-shared.properties]
14:11:52,689 ERROR [web.context.ContextLoader] Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'extension.dictionaryBootstrap' defined in file [E:\Alfresco\tomcat\webapps\alfresco\WEB-INF\classes\alfresco\extension\groupit-model-context.xml]: Invocation of init method failed; nested exception is org.alfresco.service.cmr.dictionary.DictionaryException: 09130002 Could not import bootstrap model alfresco/extension/groupITModel.xml
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1401)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:512)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:557)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:842)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:416)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:261)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:192)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
at org.alfresco.web.app.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:63)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4135)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:637)
at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:563)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:498)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
at org.apache.catalina.core.StandardService.start(StandardService.java:519)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: org.alfresco.service.cmr.dictionary.DictionaryException: 09130002 Could not import bootstrap model alfresco/extension/groupITModel.xml
at org.alfresco.repo.dictionary.DictionaryBootstrap.onDictionaryInit(DictionaryBootstrap.java:157)
at org.alfresco.repo.dictionary.DictionaryBootstrap.bootstrap(DictionaryBootstrap.java:104)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1529)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1468)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1398)
… 37 more
Caused by: org.alfresco.service.cmr.dictionary.DictionaryException: 09130001 Failed to compile model mg:groupIT
at org.alfresco.repo.dictionary.CompiledModel.<init>(CompiledModel.java:106)
at org.alfresco.repo.dictionary.M2Model.compile(M2Model.java:128)
at org.alfresco.repo.dictionary.DictionaryDAOImpl.putModel(DictionaryDAOImpl.java:277)
at org.alfresco.repo.dictionary.DictionaryBootstrap.onDictionaryInit(DictionaryBootstrap.java:153)
… 45 more
Caused by: org.alfresco.service.cmr.dictionary.DictionaryException: 09130000 Found duplicate property definition mg:companyName within class mg:acceroCyborgAspect and class mg:groupITLegalDoc
at org.alfresco.repo.dictionary.M2ClassDefinition.<init>(M2ClassDefinition.java:115)
at org.alfresco.repo.dictionary.M2AspectDefinition.<init>(M2AspectDefinition.java:42)
at org.alfresco.repo.dictionary.CompiledModel.constructDefinitions(CompiledModel.java:159)
at org.alfresco.repo.dictionary.CompiledModel.<init>(CompiledModel.java:88)
… 48 more
log4j:ERROR LogMananger.repositorySelector was null likely due to error in class reloading, using NOPLoggerRepository.
Exception in thread "JGroupsKeepAliveHeartbeatSender" java.lang.NullPointerException
at org.alfresco.enterprise.repo.cache.jgroups.JGroupsKeepAliveHeartbeatSender$HeartbeatSenderThread.run(JGroupsKeepAliveHeartbeatSender.java:179)
14:11:58,321 ERROR [extensions.config.BaseConfigService] Input stream invalid - skipped for source: classpath:alfresco/web-extension/share-config-custom.xml'
org.springframework.extensions.config.ConfigException: 09130000 Failed to parse config stream
at org.springframework.extensions.config.xml.XMLConfigService.parse(XMLConfigService.java:198)
at org.springframework.extensions.config.BaseConfigService.appendConfig(BaseConfigService.java:251)
at org.springframework.extensions.config.BaseConfigService.parse(BaseConfigService.java:281)
at org.springframework.extensions.config.xml.XMLConfigService.initConfig(XMLConfigService.java:131)
at org.springframework.extensions.config.BaseConfigService.init(BaseConfigService.java:92)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1529)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1468)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1398)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:512)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:557)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:842)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:416)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:261)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:192)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4135)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:905)
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:740)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:500)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
at org.apache.catalina.core.StandardService.start(StandardService.java:519)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: org.dom4j.DocumentException: Error on line 1 of document : Premature end of file. Nested exception: Premature end of file.
at org.dom4j.io.SAXReader.read(SAXReader.java:482)
at org.dom4j.io.SAXReader.read(SAXReader.java:343)
at org.springframework.extensions.config.xml.XMLConfigService.parse(XMLConfigService.java:164)
… 47 more
14:12:00,817 INFO [extensions.webscripts.DeclarativeRegistry] Registered 228 Web Scripts (+0 failed), 236 URLs
14:12:00,817 INFO [extensions.webscripts.DeclarativeRegistry] Registered 8 Package Description Documents (+0 failed)
14:12:00,817 INFO [extensions.webscripts.DeclarativeRegistry] Registered 0 Schema Description Documents (+0 failed)
14:12:00,942 ERROR [extensions.config.BaseConfigService] Input stream invalid - skipped for source: classpath:alfresco/web-extension/share-config-custom.xml'
org.springframework.extensions.config.ConfigException: 09130001 Failed to parse config stream
at org.springframework.extensions.config.xml.XMLConfigService.parse(XMLConfigService.java:198)
at org.springframework.extensions.config.BaseConfigService.appendConfig(BaseConfigService.java:251)
at org.springframework.extensions.config.BaseConfigService.parse(BaseConfigService.java:281)
at org.springframework.extensions.config.xml.XMLConfigService.initConfig(XMLConfigService.java:131)
at org.springframework.extensions.config.BaseConfigService.reset(BaseConfigService.java:142)
at org.springframework.extensions.webscripts.AbstractRuntimeContainer.reset(AbstractRuntimeContainer.java:227)
at org.springframework.extensions.webscripts.PresentationContainer.reset(PresentationContainer.java:113)
at org.springframework.extensions.webscripts.LocalWebScriptRuntimeContainer.reset(LocalWebScriptRuntimeContainer.java:88)
at org.springframework.extensions.webscripts.AbstractRuntimeContainer.onApplicationEvent(AbstractRuntimeContainer.java:247)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:97)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:294)
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:858)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:419)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:261)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:192)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4135)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:905)
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:740)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:500)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
at org.apache.catalina.core.StandardService.start(StandardService.java:519)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: org.dom4j.DocumentException: Error on line 1 of document : Premature end of file. Nested exception: Premature end of file.
at org.dom4j.io.SAXReader.read(SAXReader.java:482)
at org.dom4j.io.SAXReader.read(SAXReader.java:343)
at org.springframework.extensions.config.xml.XMLConfigService.parse(XMLConfigService.java:164)
… 39 more
14:12:00,942 INFO [extensions.webscripts.AbstractRuntimeContainer] Initialised Spring Surf Container Web Script Container (in 1545.125ms)
14:12:01,004 INFO [extensions.webscripts.TemplateProcessorRegistry] Registered template processor freemarker for extension ftl
14:12:01,098 INFO [extensions.webscripts.ScriptProcessorRegistry] Registered script processor javascript for extension js
14:12:01,207 INFO [extensions.webscripts.TemplateProcessorRegistry] Registered template processor freemarker for extension ftl
14:12:01,207 INFO [extensions.webscripts.ScriptProcessorRegistry] Registered script processor javascript for extension js
14:12:01,332 INFO [extensions.webscripts.TemplateProcessorRegistry] Registered template processor freemarker for extension ftl
14:12:01,332 INFO [extensions.webscripts.ScriptProcessorRegistry] Registered script processor javascript for extension js
Exception in thread "net.sf.ehcache.CacheManager@39fb9fb3" java.lang.NullPointerException
at org.slf4j.impl.Log4jLoggerAdapter.debug(Log4jLoggerAdapter.java:204)
at net.sf.ehcache.util.UpdateChecker.checkForUpdate(UpdateChecker.java:62)
at net.sf.ehcache.util.UpdateChecker.run(UpdateChecker.java:50)
at java.util.TimerThread.mainLoop(Unknown Source)
at java.util.TimerThread.run(Unknown Source)
14:12:02,502 INFO [site.servlet.NTLMAuthenticationFilter] NTLMAuthenticationFilter initialised.
Exception in thread "net.sf.ehcache.CacheManager@7d0e6cbd" java.lang.NullPointerException
at org.slf4j.impl.Log4jLoggerAdapter.debug(Log4jLoggerAdapter.java:204)
at net.sf.ehcache.util.UpdateChecker.checkForUpdate(UpdateChecker.java:62)
at net.sf.ehcache.util.UpdateChecker.run(UpdateChecker.java:50)
at java.util.TimerThread.mainLoop(Unknown Source)
at java.util.TimerThread.run(Unknown Source)
I don't know what the error means as it doesn't really give me any indicator of what's wrong other than it can't do it. Any ideas? We're running Enterprise 3.3.1. I managed to get the data content model running fine on Enterprise 3.1 however. So i'm not sure really.Here's the contents of my model:<?xml version="1.0" encoding="UTF-8"?>
<model name="mg:groupIT"
xmlns="http://www.alfresco.org/model/dictionary/1.0">
<description>Group IT Legal Document data model</description>
<author>bengrah</author>
<published>2010-10-12</published>
<version>1.0</version>
<imports>
<import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d" />
<import uri="http://www.alfresco.org/model/content/1.0" prefix="cm" />
</imports>
<namespaces>
<namespace uri="http://www.website.com/model/content/groupit/legalDocuments/1.0" prefix="mg" />
</namespaces>
<!–
property value meanings:
title: title of property as it will appear in Alfresco Explorer
type: data type of the property
protected: set to true will restrict the property from being populated by the current system, set to false allows users to input details
mandatory: set to true will require the user to input a value before saving to system, set to false means providing value is optional
multiple: set to true allows multiple values for the property
index value meanings:
enabled: set to true will force indexing settings for the property, allowing it to be searchable
atomic: set to true will cause index to be updated when content is added to the repository
stored: set to true will cause the content to be stored in the index
tokenised: set to true will make a multiple token property e.g. "miller homes" to be stored as two tokens, false stores it as one
–>
<types>
<type name="mg:groupITLegalDoc">
<title>GroupIT Legal Document</title>
<parent>cm:content</parent>
<properties>
<property name="mg:companyName">
<title>Company Name</title>
<type>d:text</type>
<protected>false</protected>
<mandatory>true</mandatory>
<multiple>false</multiple>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>true</tokenised>
</index>
</property>
<property name="mg:contractStartDate">
<title>Start Date</title>
<type>d:date</type>
<protected>false</protected>
<mandatory>true</mandatory>
<multiple>false</multiple>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>true</tokenised>
</index>
</property>
<property name="mg:contractEndDate">
<title>End Date</title>
<type>d:date</type>
<protected>false</protected>
<mandatory>true</mandatory>
<multiple>false</multiple>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>true</tokenised>
</index>
</property>
<property name="mg:contractNo">
<title>Contract Number or Reference</title>
<type>d:text</type>
<protected>false</protected>
<mandatory>true</mandatory>
<multiple>false</multiple>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>true</tokenised>
</index>
</property>
<property name="mg:system">
<title>System</title>
<type>d:text</type>
<protected>false</protected>
<mandatory>true</mandatory>
<multiple>false</multiple>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>true</tokenised>
</index>
</property>
</properties>
<mandatory-aspects>
<aspect>cm:taggable</aspect>
</mandatory-aspects>
</type>
</types>
<aspects>
<aspect name="mg:acceroCyborgAspect">
<title>Accero / Cyborg</title>
<parent>cm:content</parent>
<properties>
<property name="mg:companyName">
<title>Company Name</title>
<type>d:text</type>
<default>Accero / Cyborg</default>
</property>
</properties>
</aspect>
</aspects>
</model>
Which I've validated against the modelSchema.xsd file and is fine, here's my context file too:<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>
<!– Registration of new models –>
<bean id="extension.dictionaryBootstrap" parent="dictionaryModelBootstrap" depends-on="dictionaryBootstrap">
<property name="models">
<list>
<value>alfresco/extension/groupITModel.xml</value>
</list>
</property>
</bean>
</beans>