Message Boards

Liferay 7.3.0 - Error en WabProcessor: java.lang.StringIndexOutOfBoundsExce

thumbnail
Santiago Pérez de la Cámara, modified 3 Years ago.

Liferay 7.3.0 - Error en WabProcessor: java.lang.StringIndexOutOfBoundsExce

Junior Member Posts: 53 Join Date: 3/23/12 Recent Posts
Hola:
No sé si se trata de un bug o algo que me falta.Estoy con Liferay 7.3 GA1 y en Liferay Developer Studio creo un tema nuevo utilizando la plantilla "theme".
Tal y como lo genera (heredando en el build.gradle de "styled" y "unstyled"), hago el build y lo despliego, sin incluir nada de código.
Obtengo el siguiente error:
2020-05-11 15:51:11.035 ERROR [fileinstall-C:/eclipse-workspace/XXXX-workspace/bundles/osgi/war][LogService:93] Failed to install artifact: C:\eclipse-workspace\XXXX-workspace\bundles\osgi\war\XXXX-theme.war 
java.lang.RuntimeException: com.liferay.portal.kernel.deploy.auto.AutoDeployException: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    at com.liferay.portal.osgi.web.wab.generator.internal.processor.WabProcessor.executeAutoDeployers(WabProcessor.java:255)
    at com.liferay.portal.osgi.web.wab.generator.internal.processor.WabProcessor.autoDeploy(WabProcessor.java:156)
    at com.liferay.portal.osgi.web.wab.generator.internal.processor.WabProcessor.getProcessedFile(WabProcessor.java:113)
    at com.liferay.portal.osgi.web.wab.generator.internal.WabGenerator.generate(WabGenerator.java:90)
    at com.liferay.portal.osgi.web.wab.generator.internal.connection.WabURLConnection.getInputStream(WabURLConnection.java:101)
    at java.net.URL.openStream(URL.java:1045)
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.install(DirectoryWatcher.java:974)
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.install(DirectoryWatcher.java:896)
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.doProcess(DirectoryWatcher.java:493)
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:369)
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:320)
Caused by: com.liferay.portal.kernel.deploy.auto.AutoDeployException: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    at com.liferay.portal.tools.deploy.BaseDeployer.autoDeploy(BaseDeployer.java:237)
    at com.liferay.portal.deploy.auto.ThemeAutoDeployer.autoDeploy(ThemeAutoDeployer.java:101)
    at com.liferay.portal.deploy.auto.ThreadSafeAutoDeployer.autoDeploy(ThreadSafeAutoDeployer.java:39)
    at com.liferay.portal.kernel.deploy.auto.BaseAutoDeployListener.deploy(BaseAutoDeployListener.java:47)
    at com.liferay.portal.osgi.web.wab.generator.internal.processor.WabProcessor.executeAutoDeployers(WabProcessor.java:252)
    ... 10 more

¿Es posible que sea un bug? ¿Tengo que hacer algo en el tema para que se despliegue correctamente?
Muchas gracias,
Santiago
thumbnail
Santiago Pérez de la Cámara, modified 3 Years ago.

RE: Liferay 7.3.0 - Error en WabProcessor: java.lang.StringIndexOutOfBounds

Junior Member Posts: 53 Join Date: 3/23/12 Recent Posts
He encontrado el problema. 
Se trata de la propiedad "module-group-id" del fichero "liferay-plugin-package.properties".
A diferencia de otros proyectos war que tengo (portlets JSF) en los que en esa propiedad se pueden utilizar todo tipo de caracteres, parece que en los temas es diferente y arroja ese error si encuentra algo que no le gusta.
Esta es la propiedad que me genera la excepción StringIndexOutOfBoundsException:
  • module-group-id=ISCIII/UITES/test-theme/7.3.0/war
Y si escribo esto otro, el tema se despliega sin problemas
  • module-group-id=ISCIII-UITES-test-theme
Por si a alguien le sirve de ayuda si se encuentra con ese error.
Santiago
thumbnail
Álvaro Saugar López, modified 3 Years ago.

RE: Liferay 7.3.0 - Error en WabProcessor: java.lang.StringIndexOutOfBounds

New Member Posts: 2 Join Date: 1/6/20 Recent Posts
La propiedad module-group-id indica el grupo al que pertenece la aplicación, que se suele relacionar con el identificador de la categoría (el desplegable en el que se organizan los widgets) que se indica en liferay-display.xml (no es obligatoria, pero sí una recomendación).  La verdad que nunca he puesto caracteres especiales ya que usaba lo mismo que para la categoría, que tiene más limitaciones para poder ser traducida, pero tendría sentido.  Cierto que en los temas no se muestran en el listado de widgets, pero por lo que he visto, los métodos que se usan acaban llamando al mismo método padre, por lo que puede ser el motivo. 
A parte de si es una limitación (que tendría que tendríamos que documentar) o un bug , ¿hay algún motivo por el que te interese indicarlo así? (por saberlo principalmente).
thumbnail
Santiago Pérez de la Cámara, modified 3 Years ago.

RE: Liferay 7.3.0 - Error en WabProcessor: java.lang.StringIndexOutOfBounds

Junior Member Posts: 53 Join Date: 3/23/12 Recent Posts
No tengo ningún interés especial en indicarlo de esa forma. Estoy poniendo algo similar en el resto de proyectos  (portlets) que estoy creando y era por seguir la misma nomenclatura. Tampoco sabía cuál era la utilidad exacta de esa propiedad.Gracias Álvaro!
thumbnail
Álvaro Saugar López, modified 3 Years ago.

RE: Liferay 7.3.0 - Error en WabProcessor: java.lang.StringIndexOutOfBounds

New Member Posts: 2 Join Date: 1/6/20 Recent Posts
Se me ha olvidado ponerlo, la case en la que se despliega el theme (que sale en la traza) es ThemeAutoDeployer, que se puede ver que da error al llamar al super (línea 101), que acaba llamando a la clase BaseDeployer, dónde da el error (genérica para todos los componentes).
thumbnail
Marcial Calvo Valenzuela, modified 3 Years ago.

RE: Liferay 7.3.0 - Error en WabProcessor: java.lang.StringIndexOutOfBounds (Answer)

New Member Posts: 4 Join Date: 4/15/20 Recent Posts
el problema, como has podido ver, es el incluir el caracter slash en el nombre de la property
module-group-id

Como te ha indicado Álvaro, dicha property se usa para conformar el moduleId. En este punto, como podéis observar en el TAG concreto a la versión que estás ejecutando (7.3.0-ga1), el moduleId es
groupId+"/"+artifactId+"/"+pluginVersion+"/"+type

resultando en tu caso el siguiente moduleId
ISCIII/UITES/test/theme/7.3.0/war/my-new-theme/7.3.0.1/war

obteniendo en el momento del despliegue (en este punto)
groupId=ISCIII
artifactId=UITES
pluginVersion=test
type=theme
Con estos valores en dichas variables, si vamos a la línea 125 de ThemeDeployer.java, llega el momento en el que se busca en el artifactId la cadena
-theme
 para hacer luego un substring y sacar el themeId, donde te está arrojando la excepción.Utilizando “-” en lugar del slash “/”, obtendrías los valores correctos y esperados:
groupId=ISCIII-UITES-test-theme-7.3.0-war
artifactId=test-theme
pluginVersion=7.3.0.1
type=warTras revisar el código de versiones anteriores y futuras(máster), el uso del slash en la property tampoco te permitiría desplegar ese theme
Por tanto en el
module-group-id
no es posible la inserción del caracter “/”
thumbnail
Santiago Pérez de la Cámara, modified 3 Years ago.

RE: Liferay 7.3.0 - Error en WabProcessor: java.lang.StringIndexOutOfBounds

Junior Member Posts: 53 Join Date: 3/23/12 Recent Posts
Muchas gracias Marcial!