Ajouter un aspect à un contenu existant

cancel
Showing results for 
Search instead for 
Did you mean: 
cpichon_8454
Member II

Ajouter un aspect à un contenu existant

Bonjour,

Avec alfresco  3.0.

j'ai un contenu existant que je trouve via Lucene. Je suis capable de modifier son nom, donc je pointe sur le bon contenu. Le code suivant fonctionne.

Predicate predicate = new Predicate();
      predicate.setStore(storeRef);
      Reference ref = new Reference();
      ref.setStore(storeRef);
      ref.setUuid(content.getUuid());
      predicate.setNodes(new Reference[]{ref});
      
      NamedValue nameValue = Utils.createNamedValue(Constants.PROP_NAME,
            "nouveau nom");
      NamedValue[] contentProps = new NamedValue[] {nameValue};
            
      CMLUpdate cmlUpdt = new CMLUpdate(contentProps, predicate,
            null);  // ok ça marche
      
      CML cml = new CML();
      cml.setUpdate(new CMLUpdate[] { cmlUpdt });
   
      WebServiceFactory.getRepositoryService().update(cml);

je souhaite ajouter un aspect dynamiquement
je rajoute

// retour pcb
      NamedValue[] retourProp = new NamedValue[2];
      retourProp[0] = Utils.createNamedValue(Constants.createQNameString(
            Application.NAMESPACE_CLIENT, "CodeAcquitPCB"),
            retour.getCode());
      
      retourProp[1] = Utils.createNamedValue(Constants.createQNameString(
            Application.NAMESPACE_CLIENT, "LibelleAcquitPCB"),
            retour.getLibelle());
      
      CMLAddAspect addAspectretourAspect = new CMLAddAspect(Constants
            .createQNameString(
                  Application.NAMESPACE_CLIENT,
                  "retourPcbAspect"), retourProp, null, "ref1");
..
<br>
et avant le WebServiceFactory.getRepositoryService().update(cml);j'ajoute
<br>
CML cml = new CML();   
      cml.setUpdate(new CMLUpdate[] { cmlUpdt });
      cml.setAddAspect(new CMLAddAspect[] {addAspectretourAspect});
        QName aspectQName = QName.createQName(cml.getAddAspect()[0].getAspect());


et là, j'ai l'erreur suivante:

AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.generalException
faultSubcode:
faultString:
faultActor:
faultNode:
faultDetail:
   {http://www.alfresco.org/ws/service/repository/1.0}RepositoryFault:<ns1:errorCode>0</ns1:errorCode><ns1:message>java.lang.NullPointerException</ns1:message>
   {http://xml.apache.org/axis/}exceptionName:org.alfresco.repo.webservice.repository.RepositoryFault
   {http://xml.apache.org/axis/}stackTrace:
   at org.alfresco.repo.webservice.repository.RepositoryWebService.update(RepositoryWebService.java:341)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397)
   at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186)
   at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323)
   at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
   at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
   at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
   at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:454)
   at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)
   at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
   at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
   at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
   at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
   at java.lang.Thread.run(Thread.java:619)

   {http://xml.apache.org/axis/}hostname:portable-cpicho


   at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
   at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
   at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
   at java.lang.reflect.Constructor.newInstance(Unknown Source)
   at java.lang.Class.newInstance0(Unknown Source)
   at java.lang.Class.newInstance(Unknown Source)
   at org.apache.axis.encoding.ser.BeanDeserializer.<init>(BeanDeserializer.java:104)
   at org.apache.axis.encoding.ser.BeanDeserializer.<init>(BeanDeserializer.java:90)
   at org.alfresco.webservice.repository.RepositoryFault.getDeserializer(RepositoryFault.java:146)
   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.axis.encoding.ser.BaseDeserializerFactory.getSpecialized(BaseDeserializerFactory.java:154)
   at org.apache.axis.encoding.ser.BaseDeserializerFactory.getDeserializerAs(BaseDeserializerFactory.java:84)
   at org.apache.axis.encoding.DeserializationContext.getDeserializer(DeserializationContext.java:464)
   at org.apache.axis.encoding.DeserializationContext.getDeserializerForType(DeserializationContext.java:547)
   at org.apache.axis.message.SOAPFaultDetailsBuilder.onStartChild(SOAPFaultDetailsBuilder.java:157)
   at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1035)
   at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
   at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
   at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
   at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
   at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
   at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
   at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
   at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
   at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
   at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source)
   at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
   at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
   at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
   at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
   at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
   at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
   at org.apache.axis.client.Call.invoke(Call.java:2767)
   at org.apache.axis.client.Call.invoke(Call.java:2443)
   at org.apache.axis.client.Call.invoke(Call.java:2366)
   at org.apache.axis.client.Call.invoke(Call.java:1812)
   at org.alfresco.webservice.repository.RepositoryServiceSoapBindingStub.update(RepositoryServiceSoapBindingStub.java:986)

apparemment ça ne vient pas de mon aspect.

par ailleurs, j'arrive à affecter un aspect sur un CMLCreate mais pas sur un Update.

Si quelqu'un pouvait m'aider.
Merci par avance.
2 Replies
cleseach
Active Member II

Re: Ajouter un aspect à un contenu existant

Bonjour,

A priori, votre problème vient de cette ligne :
CMLAddAspect addAspectretourAspect = new CMLAddAspect(Constants
            .createQNameString(
                  Application.NAMESPACE_CLIENT,
                  "retourPcbAspect"), retourProp, null, "ref1");
Vous indiquez que l'aspect "retourPcbAspect" doit être appliqué sur le noeud "ref1". "ref1" est une valeur permettant de référencer un noeud dans un appel CML.
Je n'ai pas trouvé dans vos extraits de code la définition de "ref1".

En supposant que "predicate" soit toujours le noeud sur lequel vous souhaitez opérer, vous pouvez essayer :
CMLAddAspect addAspectretourAspect = new CMLAddAspect(Constants
            .createQNameString(
                  Application.NAMESPACE_CLIENT,
                  "retourPcbAspect"), retourProp, predicate, null);

Cordialement,
Charles Le Seac'h
cpichon_8454
Member II

Re: Ajouter un aspect à un contenu existant

Merci, ça fonctionne !

Cordialement,
Christophe