cancel
Showing results for 
Search instead for 
Did you mean: 

Desesperado creando un nuevo wizard de espacios

ajimenez
Champ in-the-making
Champ in-the-making
Buenas,

Llevo ya 4 días intentando crear un nuevo Wizard para la creación de espacios y estoy atascado en un punto y empiezo a tirarme de los pelos!  :x

El caso, después de probar mil cosas distintas, he vuelto al inicio, tomando el CustomWizard que viene en la SDK para la creación de contenidos:
Importo el proyecto en el eclipse, ejecuto el ant tomo el zip y lo "despliego" sobre alfresco, copiando el jar en el lib y las jsp en su sitio y arranco Alfresco…
Voy a crear contenido, primer paso bien, segundo paso bien y tercer paso… error mostrado en el navegador:  :?

javax.faces.FacesException: javax.faces.el.EvaluationException: Cannot get value for expression '#{WizardManager.bean.aspects}'
caused by:
org.apache.jasper.JasperException: javax.faces.el.EvaluationException: Cannot get value for expression '#{WizardManager.bean.aspects}'
caused by:
javax.faces.el.EvaluationException: Cannot get value for expression '#{WizardManager.bean.aspects}'
caused by:
javax.faces.el.EvaluationException: Exception getting value of property aspects of base of type : org.alfresco.sample.CustomCreateContentWizard
caused by:
javax.faces.el.EvaluationException: Bean: org.alfresco.sample.CustomCreateContentWizard, property: aspects
caused by:
java.lang.reflect.InvocationTargetException
caused by:
java.lang.IllegalAccessError: tried to access field org.alfresco.web.bean.dialog.BaseDialogBean.dictionaryService from class org.alfresco.sample.CustomCreateContentWizard

No entiendo porqué da este error ya que en este punto, aun no he tocado nada.


Arreglado o no el error intento crear un Wizard personalizado de creación de espacios.
Creo una nueva clase ajSpaceWizard, basada en la anterior, pero que extienda de CreateSpaceWizard y modifico los archivos de configuración:

Modifico el web-client-config-custom.xml

<wizard name="ajSpace" managed-bean="AjSpaceWizard"
[…]

Le añado esto para que aparezca en el menú:

<config>
      <actions>
         <action id="aj_space_wizard">
            <permissions>
               <permission allow="true">CreateChildren</permission>
            </permissions>
            <labe>El labe</labe>
            <label-id>aj_espacio_wizard_label</label-id>
            <image>/images/icons/new_content.gif</image>
            <action>wizard:ajSpace</action>
         </action>
      </actions>
   </config>
  
   <config>
   <actions>        
         <action-group id="browse_create_menu">     
            <action idref="aj_space_wizard" />
         </action-group>
         </actions>
   </config>

Modifico el faces-config.xml para que referencie a la nueva definición del bean:

<managed-bean-name>AjSpaceWizard</managed-bean-name>
      <managed-bean-class>org.alfresco.sample.AjSpaceWizard</managed-bean-class>

Vuelvo a crear el jar ….
y al inicar el "Aj Space Wizard" me da un error qu emuestra en el navegador:


org.alfresco.error.AlfrescoRuntimeException: 09210002 Failed to start wizard as managed bean 'AjSpaceWizard' has not been defined

¿Y ahora por qué no me carga el Bean?  :evil: Estoy desesperado! Si alguien puede arrojar algo de luz a mi problema se lo agradeceré profundamente!!
6 REPLIES 6

pjcaracuel_2349
Confirmed Champ
Confirmed Champ
Buenas,

En este post, realizan tu mismo ejemplo sin error.
http://forums.alfresco.com/en/viewtopic.php?f=12&t=12394

Saludos

ajimenez
Champ in-the-making
Champ in-the-making
Gracias pjcaracuel,

Eso me sirve para resolver la primera parte, que es probar a crear un wizard para contenido personalizado.

Pero  lamentablemente no soluciona mi problema al intentar crear el wizard para espacios.

Una vez mas, gracias!

pjcaracuel_2349
Confirmed Champ
Confirmed Champ
Bueno como decia "jack" vayamos por partes, una vez solucionado lo primero, nos ponemos con lo segundo.

Veo que has seguidos los pasos que vienen en la wiki
http://wiki.alfresco.com/wiki/Customising_The_Create_Content_Wizard

Asi que el error tiene que ser algo trivial aunque habra que ponerse para localizarlo.

Saludos

ajimenez
Champ in-the-making
Champ in-the-making
Por fin!

El problema residía en el face-config.xml usado para el CustomContentWizard de la sdk.
Este face-config.xml tenía un problema si quería usarlo para un tipo espacio y para colmo el cargador de face-config.xml no soltaba ninguna traza al parsearlo ni al intentar instanciar el bean.

face-config.xml original de la skd.

<managed-bean>
      <managed-bean-name>CustomCreateContentWizard</managed-bean-name>
      <managed-bean-class>org.alfresco.sample.CustomCreateContentWizard</managed-bean-class>
      <managed-bean-scope>session</managed-bean-scope>
      <managed-property>
         <property-name>nodeService</property-name>
         <value>#{NodeService}</value>
      </managed-property>
      <managed-property>
         <property-name>fileFolderService</property-name>
         <value>#{FileFolderService}</value>
      </managed-property>
      <managed-property>
         <property-name>searchService</property-name>
         <value>#{SearchService}</value>
      </managed-property>
      <managed-property>
         <property-name>navigator</property-name>
         <value>#{NavigationBean}</value>
      </managed-property>
      <managed-property>
         <property-name>browseBean</property-name>
         <value>#{BrowseBean}</value>
      </managed-property>
      <managed-property>
         <property-name>contentService</property-name>
         <value>#{ContentService}</value>
      </managed-property>
      <managed-property>
         <property-name>dictionaryService</property-name>
         <value>#{DictionaryService}</value>
      </managed-property>
   </managed-bean>

Configuración utilizada por el wizard de creación de espacios:
<managed-bean>
      <description>
         The bean that backs up the Create Space Wizard
      </description>
      <managed-bean-name>CreateSpaceWizard</managed-bean-name>
      <managed-bean-class>org.alfresco.web.bean.spaces.CreateSpaceWizard</managed-bean-class>
      <managed-bean-scope>session</managed-bean-scope>
      <managed-property>
         <property-name>nodeService</property-name>
         <value>#{NodeService}</value>
      </managed-property>
      <managed-property>
         <property-name>fileFolderService</property-name>
         <value>#{FileFolderService}</value>
      </managed-property>
      <managed-property>
         <property-name>searchService</property-name>
         <value>#{SearchService}</value>
      </managed-property>
      <managed-property>
         <property-name>navigator</property-name>
         <value>#{NavigationBean}</value>
      </managed-property>
      <managed-property>
         <property-name>browseBean</property-name>
         <value>#{BrowseBean}</value>
      </managed-property>
      <managed-property>
         <property-name>dictionaryService</property-name>
         <value>#{DictionaryService}</value>
      </managed-property>
      <managed-property>
         <property-name>namespaceService</property-name>
         <value>#{NamespaceService}</value>
      </managed-property>
   </managed-bean>


Ademas de las diferencias esperadas, en la cabecera sobre la declaración del nombre del bean y de la clase a la que pertenece, hay dos propiedades diferentes (a ver si las encuentras Smiley Tongue).

Supongo que las diferencias entre las propiedades seteadas, son las causantes de algún error interno que hacía que no se cargara el bean.

Un saludo.

ajimenez
Champ in-the-making
Champ in-the-making
Bueno, ahora me vuelvo a tropezar… ahora con la tercera parte.

El wizard que pretendo hacer, tiene que recoger los valores de las propiedades del espacio (customizado) y de los aspectos que pudiera asociarle, durante el proceso de creación, en vez de hacerlo después de la creación.

Como el aspecto se le asocia despues de crearlo, mi intención es guardarlo en el bean, crear el espacio y luego actualizarselos… supongo que se puede hacer.

Alguien me puede orientar, porque estoy mirando y remirando por el foro y la wiki y no encuentro nada sobre como actualizar las propiedades o aspectos desde el wizar!  :roll:

Gracias!

ajimenez
Champ in-the-making
Champ in-the-making
Por lo que he visto en otras entradas al foro inglés, la cosa quedaría así:

Una vez preparadas las jsp y tal, que eso ya lo tengo mas o menos,
tengo que sobrescribir el método de finalización


protected String finishImpl(FacesContext context, String outcome) throws Exception
{
   super.finishImpl(context, outcome);

   this.nodeService.setProperty(this.createdNode, <QName for custom:fieldOne>, value);
   this.nodeService.setProperty(this.createdNode, <QName for custom:fieldTwo>, value);

   return outcome;
}

El problema está en que me da el siguiente error en cuanto accedo al nodeService para cualquier cosa,
ya sea algo tan sencillo como;

if(this.nodeService != null) { ; }

Error:
java.lang.IllegalAccessError: tried to access field org.alfresco.web.bean.dialog.BaseDialogBean.nodeService

He revisado el face-config.xml y el nodeService es seteado. Incluso he puesto una traza para verificarlo y el método setNodeService es llamado.

¿Alguien puede echarme una mano?
Mil gracias!