Hi,
Really hoping someone can help me out. I have been experiencing trouble for sometime getting a custom widget rendering in V8.
My environment:
Version 8.0 SP1 and SP2 installed.
I did the following:
1. Created the following java Objects:
V8WCMHiddenWidgetLargeObject.java
package com.prudential.v8widgets.hidden;
import com.vignette.ui.vcm.widget.VUIAbstractWidget;
import java.io.Serializable;
/**
* The <code>SampleWidget</code> acts as a widget data model.
*/
public class V8WCMHiddenWidgetLargeObject extends VUIAbstractWidget implements Serializable {
public V8WCMHiddenWidgetLargeObject ()
{
super();
}
}
V8WCMHiddenWidgetLargeObjectMap.java
package com.prudential.v8widgets.hidden;
import java.util.Map;
import com.vignette.ui.core.UIException;
import com.vignette.ui.core.request.Request;
import com.vignette.ui.vcm.widget.VUIWidget;
import com.vignette.ui.vcm.widget.map.VUIAbstractWidgetMap;
import com.vignette.ui.vcm.widget.map.VUIHiddenWidgetMap;
/**
* The <code>SampleWidgetMap</code> maps V7 widget values to the new widget. This sample is mapping the
* V7 text widget as an example.
*/
public class V8WCMHiddenWidgetLargeObjectMap extends VUIHiddenWidgetMap {
public V8WCMHiddenWidgetLargeObjectMap ()
{
super();
}
/**
* Processes the widget data from the V7 environment and maps the values to the new widget.
*
* @param widget the new widget
* @param widgetDataMap the V7 widget data
* @param request the current <code>Request</code>
* @throws UIException if there is a problem processing the data mapping
*/
@Override
protected void processStandardMapping(VUIWidget widget, Map<String, Object> widgetDataMap, Request request)
{
V8WCMHiddenWidgetLargeObject w = (V8WCMHiddenWidgetLargeObject)widget;
}
}
package com.prudential.v8widgets.hidden;
import com.vignette.ui.vcm.widget.renderer.AbstractRenderer;
import com.vignette.ui.vcm.widget.renderer.HiddenRenderer;
import com.vignette.ui.vcm.widget.renderer.TextRenderer;
import java.io.Serializable;
/**
* The <code>SampleRenderer</code> provides rendering specific values along with data from the widget.
*
* The <code>AbstractRenderer</code> provides much of the base functionality while this implementation only needs
* to provide methods specific to the rendering requirements.
*/
public class V8WCMHiddenWidgetLargeObjectRenderer extends AbstractRenderer implements HiddenRenderer, Serializable {
/**
* Returns the type.
* @return the type.
*/
public int getHiddenType() {
return HIDDEN_USER_TYPE;
}
}
2. I then create the following xml files and put them in vignette.customer package:
pru-ui-widget-maps.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
default-lazy-init="false">
<!-- Hidden widgets -->
<bean name="WCMHiddenWidgetLargeObject" class="com.prudential.v8widgets.hidden.V8WCMHiddenWidgetLargeObjectMap">
<property name="widgetClass" value="com.prudential.v8widgets.hidden.V8WCMHiddenWidgetLargeObject"/>
<property name="type" value="0"/>
</bean>
</beans>
and.....
pru-ui-widget-renderers.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
default-lazy-init="false">
<!-- Hidden widgets -->
<bean name="WCMHiddenWidgetLargeObject" class="com.prudential.v8widgets.hidden.V8WCMHiddenWidgetLargeObjectMap">
<property name="widgetClass" value="com.prudential.v8widgets.hidden.V8WCMHiddenWidgetLargeObject"/>
<property name="type" value="0"/>
</bean>
</beans>
3. I packaged in a jar (cma-v8widgets-custom.jar) : See Attached jar.
4. I ran configp and registered cma-v8widgets.custom.jar as a product extension.
I am trying to connect my V7 widget WCMHiddenWidgetLargeObject to my new V8 widget - V8WCMHiddenWidgetLargeObject.
5. I already have WCMHiddenWidgetLargeObject registered in my configconsole.
6. My CTD has WCMHiddenWidgetLargeObject as a datatype and set to be v8 Style Editor.
When I go into my v8 console(/content) - I get the horrible 'This field cannot be displayed. Contact your system administrator'.
When I test on my local server - I tried modifying the vcm-ui-config.jar and wha la.....It finally works!
But, of course... I do not want to modify any vignette files directly.
Why is it not looking at my XML mapping files contained in my cma-v8widgets-custom.jar?
I will attached my vgn_api_VgnVCM1.log. Let me know if you need anything else.
Here is a snippet of what I see in my log:
Trying to get bean from application path [[ACTIVE] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'] []
2011-03-21 16:03:36,943 | DEBUG | vui.core.editor.LayoutManager | getRenderer(): searching for the widget on: WCMHiddenWidgetLargeObject(hidden_vcmguid) [[ACTIVE] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'] []
2011-03-21 16:03:36,943 | DEBUG | i.core.editor.WidgetMapFactory | Finding map object for widget: WCMHiddenWidgetLargeObject [[ACTIVE] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'] []
2011-03-21 16:03:36,943 | DEBUG | core.editor.LayeredBeanFactory | Trying to get bean from core path: WCMHiddenWidgetLargeObject [[ACTIVE] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'] []
2011-03-21 16:03:36,943 | DEBUG | core.editor.LayeredBeanFactory | Trying to get bean from application path [[ACTIVE] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'] []
2011-03-21 16:03:36,943 | DEBUG | core.editor.LayeredBeanFactory | Trying to get bean from customer path [[ACTIVE] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'] []
2011-03-21 16:03:36,943 | DEBUG | core.editor.LayeredBeanFactory | Failed to find bean: WCMHiddenWidgetLargeObject [[ACTIVE] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'] []
2011-03-21 16:03:36,943 | DEBUG | i.core.editor.WidgetMapFactory | Unable to find map object for widget: WCMHiddenWidgetLargeObject -- using legacy map. [[ACTIVE] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'] []
2011-03-21 16:03:36,943 | ERROR | vui.core.editor.WidgetMap | Missing widget class: null: using default mapping to Legacy Widget. [[ACTIVE] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'] []
2011-03-21 16:03:36,943 | DEBUG | vui.core.editor.WidgetMap | Creating widget: com.vignette.ui.vcm.widget.VUILegacyWidget [[ACTIVE] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'] []
2011-03-21 16:03:36,943 | DEBUG | vui.core.editor.ClassFactory | Creating class: com.vignette.ui.vcm.widget.VUILegacyWidget [[ACTIVE] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'] []
2011-03-21 16:03:36,943 | DEBUG | vui.core.editor.WidgetMap | Loading widget data. [[ACTIVE] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'] []
Please someone help. We have tried everything to make our widgets render in V8.
Thanks in advance,
Annie