Workbench Error while adding Extension to a Content Type

I have been getting this error message while adding an extension to a content type. I am adding the extension from the workbench using preprocessor tabs in content types properties.

Because of this error in workbench, we are not able to create a new instance of content type in our content explorer. Not only this, even the previously created content items to which this extension has been added to, fail to appear in content explorer view.

I validated this, as after removing the extension from workbench, I was able to create the content items normally, and view the previously created content items.

manvinder

Could not save the design object of type ‘com.percussion.cms.objectstore.PSItemDefinition’ with id ‘8,589,934,910’. The underlying error was: Error initializing application psx_cegsaUrl: java.lang.IllegalArgumentException: root must be a directory at com.percussion.extension.PSExtensionClassLoader.<init>(Unknown Source) at com.percussion.extension.PSExtensionClassLoader.<init>(Unknown Source) at com.percussion.extension.PSJavaExtensionHandler.super(Unknown Source) at com.percussion.extension.PSJavaExtensionHandler.loadExtension(Unknown Source) at com.percussion.extension.PSExtensionHandler.prepare(Unknown Source) at com.percussion.extension.PSExtensionManager.prepareExtension(Unknown Source) at com.percussion.server.PSApplicationHandler.prepareExtension(Unknown Source) at com.percussion.data.vb.loadExtensions(Unknown Source) at com.percussion.data.vb.Ò00000(Unknown Source) at com.percussion.data.vb.<init>(Unknown Source) at com.percussion.cms.handlers.PSCommandHandler.<init>(Unknown Source) at com.percussion.cms.handlers.PSQueryCommandHandler.<init>(Unknown Source) at com.percussion.cms.handlers.PSEditCommandHandler.<init>(Unknown Source) at com.percussion.cms.handlers.PSContentEditorHandler.<init>(Unknown Source) at com.percussion.server.PSApplicationHandler.addDataHandler(Unknown Source) at com.percussion.server.PSApplicationHandler.Ò00000(Unknown Source) at com.percussion.server.PSApplicationHandler.<init>(Unknown Source) at com.percussion.server.PSServer.startApplication(Unknown Source) at com.percussion.server.PSServer.startApplication(Unknown Source) at com.percussion.server.PSServer$_c.Ó00000(Unknown Source) at com.percussion.design.objectstore.server.PSXmlObjectStoreHandler.super(Unknown Source) at com.percussion.design.objectstore.server.PSServerXmlObjectStore.saveApplication(Unknown Source) at com.percussion.design.objectstore.PSContentTypeHelper.saveContentType(Unknown Source) at com.percussion.design.objectstore.PSContentTypeHelper.saveContentType(Unknown Source) at com.percussion.webservices.content.impl.PSContentDesignWs.saveContentTypes(Unknown Source) 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.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149) at com.percussion.webservices.aop.authorization.PSAuthorizationInterceptor.invoke(Unknown Source) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.percussion.webservices.aop.security.PSSecurityInterceptor.invoke(Unknown Source) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) at $Proxy137.saveContentTypes(Unknown Source) at com.percussion.webservices.contentdesign.ContentDesignSOAPImpl.saveContentTypes(Unknown Source) 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.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:453) 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:717) at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327) at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.percussion.webdav.PSWebDavRequestFilter.doFilter(Unknown Source) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.percussion.servlets.PSSecurityFilter.doFilter(Unknown Source) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.percussion.servlets.PSCharacterSetFilter.doFilter(Unknown Source) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:39) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:159) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:59) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112) at java.lang.Thread.run(Unknown Source) .

Some more information…

We have developed extensions on Windows 6.6 version and are trying to move them to Linux 6.7 version.

All the Out of the box extensions are working fine and this error occurs only when we add custom extensions to the content type. All our custom extensions are working fine in Windows local environment and they fail when migrated to Linux environment.

Looking at

...java.lang.IllegalArgumentException: root must be a directory...

It looks like you may have hard coded a directory or directory structure that uses the Windows partition mount scheme (C:\ , D:, etc… ) rather than a Linux one, where storage is mounted relative to / (root). The “root” in your error is likely the server or extension root directory. Rather than hard coding the root, I would recommend automatically detecting it if at all possible.

You will also very likely need to recompile for 6.7 using the 6.7 PSO toolkit.

Java makes cross platform development very easy, however there is still a need to avoid some platform specific pitfalls. You will probably need to test these customizations extensively in order for them to work well on both platforms.

A short explanation of the differences between how Windows and Unix handle the mounting of partitions:

In Windows, each drive partition is assigned a “letter” for which it can be accessed. This is the case in almost all Windows installations.
C:\directory\files
D:\directory2\files
Would each reside on different partitions.

Unix however maps a part of its directory structure to point its partitions:
/
/mnt/disk/
/home/
All of these could be on the same disk, or on different disks.
Looking at the output of df -h on Linux will reveal actively mounted partitions.

user@terminal:~> df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 204G 168G 26G 87% /
udev 1.9G 112K 1.9G 1% /dev
/dev/sda1 20G 7.0G 12G 38% /vm

From this, you can see that the disk /dev/sda has two actively mounted partitions, /dev/sda1 and /dev/sda3. All directories and files under / is on /dev/sda3, while anything that resides under /vm/ is on /dev/sda1.

Is there a 6.7 PSO Toolkit available ? I could not find it another code and snippet repository.

manvinder

No, there is no 6.7 toolkit, only a 6.6 one.