how to create custom content model using JCR?

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-13-2007 07:34 AM
Hi, I am trying to create custom content using JCR. I created a new custom tag for content and modifies some xmls. but unable to create content using JCR. Please if anyone can help me…
this is my code………..in the code - "dml is my custom tag"
Node rootNode = session.getRootNode();
Node companyHome = rootNode.getNode("app:company_home");
// create the content node
String name = "JCR sample (" + System.currentTimeMillis() + ")";
Node content = companyHome.addNode("dml:" + name, "dml:newscontent");
// Node content = companyHome.addNode("cm:" + name, "cm:content");
content.setProperty("cm:name", name);
// add titled aspect (for Web Client display)
//content.addMixin("cm:titled");
// content.setProperty("cm:title", name);
//content.setProperty("cm:description", name);
content.setProperty("dml:Headline", name);
//
// write some content to new node
//
//content.setProperty("cm:content", "The quick brown fox jumps over the lazy dog");
//
// To set the content mime type, we need to use an Alfresco native service
// as there isn't an equivalent call in JCR
//
setMimeType(context, content, MimetypeMap.MIMETYPE_TEXT_PLAIN);
this is my code………..in the code - "dml is my custom tag"
Node rootNode = session.getRootNode();
Node companyHome = rootNode.getNode("app:company_home");
// create the content node
String name = "JCR sample (" + System.currentTimeMillis() + ")";
Node content = companyHome.addNode("dml:" + name, "dml:newscontent");
// Node content = companyHome.addNode("cm:" + name, "cm:content");
content.setProperty("cm:name", name);
// add titled aspect (for Web Client display)
//content.addMixin("cm:titled");
// content.setProperty("cm:title", name);
//content.setProperty("cm:description", name);
content.setProperty("dml:Headline", name);
//
// write some content to new node
//
//content.setProperty("cm:content", "The quick brown fox jumps over the lazy dog");
//
// To set the content mime type, we need to use an Alfresco native service
// as there isn't an equivalent call in JCR
//
setMimeType(context, content, MimetypeMap.MIMETYPE_TEXT_PLAIN);
Labels:
- Labels:
-
Archive
2 REPLIES 2

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-13-2007 08:02 AM
Can you provide more info?
What error are you getting?
What's your model?
What bits of xml did you modify?
What error are you getting?
What's your model?
What bits of xml did you modify?

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-13-2007 08:44 AM
Runs fine but content is not seen in the webclient…check my console..
Here is my class:
Check my custom model::
I have doubt about namespace uri.. is that correct???
Here is my example-model-context.xml…
For your information i am able to create content using custom model through web client… i am able to see the meta properties…. when i try to use FirstJcrClient not able to see…
Please help me David…
Thanks
Naveen
18:01:41,765 ERROR [transform.magick.AbstractImageMagickContentTransformer] ImageMagickContentTransformer not available: Failed to perform ImageMagick transformation: Execution result: os: Windows XP command: imconvert "C:\DOCUME~1\139872\LOCALS~1\Temp\Alfresco\ImageMagickContentTransformer_init_source_9586.gif" "C:\DOCUME~1\139872\LOCALS~1\Temp\Alfresco\ImageMagickContentTransformer_init_target_9587.png" succeeded: false exit code: 1 out: err: CreateProcess: imconvert "C:\DOCUME~1\139872\LOCALS~1\Temp\Alfresco\ImageMagickContentTransformer_init_source_9586.gif" "C:\DOCUME~1\139872\LOCALS~1\Temp\Alfresco\ImageMagickContentTransformer_init_target_9587.png" error=218:01:45,140 WARN [remoting.rmi.RmiRegistryFactoryBean] Could not detect RMI registry - creating new one18:01:47,546 WARN [alfresco.util.OpenOfficeConnectionTester] A connection to OpenOffice could not be established.18:01:56,328 INFO [domain.schema.SchemaBootstrap] No changes were made to the schema.18:01:58,593 INFO [repo.admin.ConfigurationChecker] The Alfresco root data directory ('dir.root') is: C:\Alfresco2.1\alf_data18:01:58,781 INFO [admin.patch.PatchExecuter] Checking for patches to apply …18:01:59,015 INFO [repo.module.ModuleServiceImpl] Found 0 module(s).18:01:59,500 INFO [service.descriptor.DescriptorService] Alfresco JVM - v1.5.0_11-b03; maximum heap size 63.563MB18:01:59,500 WARN [service.descriptor.DescriptorService] Alfresco JVM - WARNING - maximum heap size 63.563MB is less than recommended 512MB18:01:59,500 INFO [service.descriptor.DescriptorService] Alfresco started (Community Network): Current version 2.1.0 (R1 444) schema 62 - Installed version 2.1.0 (R1 443) schema 62
Here is my class:
package org.alfresco.sample;import javax.jcr.Node;import javax.jcr.Repository;import javax.jcr.RepositoryException;import javax.jcr.Session;import javax.jcr.SimpleCredentials;import org.alfresco.jcr.api.JCRNodeRef;import org.alfresco.model.ContentModel;import org.alfresco.repo.content.MimetypeMap;import org.alfresco.service.ServiceRegistry;import org.alfresco.service.cmr.repository.ContentData;import org.alfresco.service.cmr.repository.NodeRef;import org.alfresco.service.cmr.repository.NodeService;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;/** * Simple client example demonstrating the use of the Alfresco JCR (JSR-170) API. * * The client creates a content node in the "Company Home" folder. The content * may be viewed and operated on within the Alfresco Web Client. Note: the web client * will need to be re-started after executing this sample to see the changes in * effect. * * This client demonstrates the "Embedded Repository" deployment option as described * in the Alfresco Respotiory Architecture docucment - * http://wiki.alfresco.com/wiki/Alfresco_Repository_Architecture */public class FirstJCRClient{ public static void main(String[] args) throws Exception { // access the Alfresco JCR Repository (here it's via programmatic approach, but it could also be injected) ApplicationContext context = new ClassPathXmlApplicationContext("classpath:alfresco/application-context.xml"); Repository repository = (Repository)context.getBean("JCR.Repository"); // login to workspace (here we rely on the default workspace defined by JCR.Repository bean) Session session = repository.login(new SimpleCredentials("admin", "admin".toCharArray())); try { // first, access the company home Node rootNode = session.getRootNode(); Node companyHome = rootNode.getNode("app:company_home"); // create the content node String name = "JCR sample (" + System.currentTimeMillis() + ")"; Node content = companyHome.addNode("dml:" + name, "dml:newscontent"); content.setProperty("cm:name", name); // add titled aspect (for Web Client display) content.addMixin("cm:titled"); content.setProperty("cm:title", name); content.setProperty("cm:description", name); content.setProperty("dml:PublicIdentifier", name); // // write some content to new node // content.setProperty("cm:content", "The quick brown fox jumps over the lazy dog"); // // To set the content mime type, we need to use an Alfresco native service // as there isn't an equivalent call in JCR // setMimeType(context, content, MimetypeMap.MIMETYPE_TEXT_PLAIN); // save changes session.save(); } finally { session.logout(); System.exit(0); } } /** * Demonstrates the mixed use of JCR API calls and Alfresco Foundation API calls. * * Here, the Foundation API is used to set the mimetype of the content. * * @param context application context * @param node the JCR Node to adjust * @param mimeType the mimetype to set * @throws RepositoryException */ private static void setMimeType(ApplicationContext context, Node node, String mimeType) throws RepositoryException { // retrieve service registry ServiceRegistry serviceRegistry = (ServiceRegistry) context.getBean(ServiceRegistry.SERVICE_REGISTRY); NodeService nodeService = serviceRegistry.getNodeService(); // convert the JCR Node to an Alfresco Node Reference NodeRef nodeRef = JCRNodeRef.getNodeRef(node); // retrieve the Content Property (represented as a ContentData object in Alfresco) ContentData content = (ContentData)nodeService.getProperty(nodeRef, ContentModel.PROP_CONTENT); // update the Mimetype content = ContentData.setMimetype(content, mimeType); nodeService.setProperty(nodeRef, ContentModel.PROP_CONTENT, content); }}
Check my custom model::
<?xml version="1.0" encoding="UTF-8"?> <!– Definition of new Model –> <!– The important part here is the name - Note: the use of the my: namespace which is defined further on in the document –> <model name="dml:content" xmlns="http://www.alfresco.org/model/dictionary/1.0"> <!– Optional meta-data about the model –> <description>Modele NewsML</description> <author>Christophe</author> <version>0.1</version> <!– Imports are required to allow references to definitions in other models –> <imports> <!– Import Alfresco Dictionary Definitions –> <import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d"/> <!– Import Alfresco Content Domain Model Definitions –> <import uri="http://www.alfresco.org/model/content/1.0" prefix="cm"/> </imports> <!– Introduction of new namespaces defined by this model –> <!– NOTE: The following namespace my.new.model should be changed to reflect your own namespace –> <namespaces> <namespace uri="com.company.dml.model" prefix="dml"/> </namespaces> <types><type name="dml:newscontent"> <title>Newscontent</title> <parent>cm:content</parent> <properties> <property name="dml:ProviderId"> <type>d:text</type> </property> <property name="dml:DateId"> <type>d:long</type> </property> <property name="dml:NewsItemId"> <type>d:long</type> </property> <property name="dml:RevisionId"> <type>d:long</type> </property> <property name="dml:PublicIdentifier"> <type>d:text</type> </property> </properties> </type> </types></model>
I have doubt about namespace uri.. is that correct???
Here is my example-model-context.xml…
<?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/newsModel.xml</value></list> </property> </bean> </beans>
For your information i am able to create content using custom model through web client… i am able to see the meta properties…. when i try to use FirstJcrClient not able to see…
Please help me David…
Thanks
Naveen
