Para Desenvolvedores

DouiContext nulo em postload de interface rest

Resolvido

Declarei um postload para um source content em numa restInterface de seguinte forma:

        <restInterface id="lista">
			<sources>
				<source id="default">
					<fields>
						<field id="id"/>
						<field id="name"/>
						<field id="toolTip"/>
						<field id="icon"/>
						<field id="startTime"/>
						<field id="endTime"/>
						<field id="linkUrl"/>
						<field id="redirectWhenOffline"/>
						<field id="disponivel" externalData="true"/>
					</fields>
					<orderBy>
						<field id="priority" direction="ascending" />
					</orderBy>
					<postLoadProcessors>
						<postLoadProcessor className="br.com.app.APostLoadProcessor"/>
					</postLoadProcessors>
				</source>
			</sources>
		</restInterface>

e ao tentar acessar:

 

source.getDouiContext()

Recebo null como resposta.

Precisava acessar um dado vindo via cookie no postload, teria alguma outra forma?

Por Gabriel Barbosa

Em 30/05/19 13:43

Acompanhar pergunta

2 resposta(s):

Ordenar por:

package br.com.sulamerica.corretor.service.chat.postloadprocessor;

import lumis.doui.DouiContext;
import lumis.doui.source.ISourceData;
import lumis.doui.source.Source;
import lumis.doui.source.TabularData;
import lumis.doui.source.postloadprocessor.IPostLoadProcessor;
import lumis.portal.PortalException;
import lumis.portal.authentication.SessionConfig;
import lumis.util.ITransaction;
import org.w3c.dom.Node;

import java.sql.Time;
import java.time.LocalTime;

public class ChatDisponibilidadePostLoadProcessor
		implements IPostLoadProcessor
{

	@Override
	public void processSource(SessionConfig sessionConfig, Source source, Node parametersNode, ITransaction transaction)
			throws PortalException
	{
		DouiContext douiContext = source.getDouiContext(); //null
		TabularData tabularData = (TabularData) source.getData();
		LocalTime now = LocalTime.now();
		for (ISourceData row : tabularData.getRows())
		{
			LocalTime startLocalTime = ((Time) row.get("startTime")).toLocalTime();
			LocalTime endLocalTime = ((Time) row.get("endTime")).toLocalTime();
			boolean disponivel = now.isAfter(startLocalTime) && now.isBefore(endLocalTime);
			row.put("disponivel", disponivel);
		}
	}
}

Lembrando que o erro ocorre ao acessar via rest nativo:
http://localhost:8081/lumis/api/rest/chatlogado/lumgetdata/lista/

 

Por Gabriel Barbosa

Em 31/05/19 11:17

A execução de um REST interface não tem acesso a DouiContext, request ou response.

Vc pode declarar um filtro no seu source, e seu valor fornecido como parâmetro de query do REST pode ser obtido usando Source.getParameterValue. Neste caso o javascript de chamada poderia ler o cookie e colocá-lo na query do REST.

Por Rodrigo Cesar

Em 03/06/19 11:21

Entrar

Interaja com a comunidade e tenha acesso a conteúdos exclusivos.

Houve algum erro ao acessar o banco de dados. Tente novamente mais tarde.