private void preparePortletInclusion() throws TMLException, WGAPIException {
Status status = (Status) getStatus();
String type;
TMLPortlet parentPortlet = getTMLContext().getportlet();
if (parentPortlet == null) {
if (getTMLContext().isbotrequest()) {
throw new TMLSilentCancelException();
}
else {
throw new TMLException("Current user has no portlet registration");
}
}
String pKey = getKey();
String pName = getName();
// If no key direcly given try to fetch via portlet name
if (pKey == null && pName != null) {
pKey = parentPortlet.getPortletKeyForName(pName);
}
// Fetch registration info if key provided
WGPortlet pReg = null;
if (pKey != null) {
pReg = parentPortlet.getPortletRegistration(pKey);
}
// If reg not retrievable and auto registration info available try auto registration, else cancel
if (pReg == null) {
if (pName != null && status.ref != null) {
pKey = parentPortlet.registerportletforname(pName, status.designdb, status.ref, false);
pReg = parentPortlet.getPortletRegistration(pKey);
}
else {
if (pName != null) {
throw new TMLException("Portlet name not registered: " + pName, true);
}
else if (pKey != null) {
throw new TMLException("Portlet key not registered: " + pKey, true);
}
else {
throw new TMLException("No portlet key provided.", true);
}
}
}
// Check if registration matchtes the autoregister TML. If not, reregister with the given TML.
else if (status.ref != null) {
// If the registration has no design database specified we take the current design db (which is always equal)
if (pReg.getDesignDb() == null) {
pReg.setDesignDb(status.designdb);
}
if (!WGUtils.nullSafeEquals(status.ref, pReg.getDesign(), true) ||
(!WGUtils.nullSafeEquals(status.designdb, pReg.getDesignDb(), true))) {
pKey = parentPortlet.registerportletforname(pName, status.designdb, status.ref, true);
pReg = parentPortlet.getPortletRegistration(pKey);
}
}
// Prepare environment
status.setOption(Base.OPTION_PORTLET_NAMESPACE, pKey, null);
if (pReg.getDesignDb() != null) {
status.designdb = pReg.getDesignDb();
}
status.ref = getTMLContext().resolveDesignReference(pReg.getDesign());
// Update portlet event index information
TMLPortlet childPortlet = getTMLContext().getportlet();
childPortlet.prepareEventProcessing(this);
// set child tag context to portlet context if set
TMLContext portletContext = childPortlet.getcontext();
if (portletContext != null) {
setChildTagContext(portletContext);
}
// if ajax enabled