/*
* IronJacamar, a Java EE Connector Architecture implementation
* Copyright 2015, Red Hat Inc, and individual contributors
* as indicated by the @author tags. See the copyright.txt file in the
* distribution for a full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the Eclipse Public License 1.0 as
* published by the Free Software Foundation.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Eclipse
* Public License for more details.
*
* You should have received a copy of the Eclipse Public License
* along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.ironjacamar.core.workmanager.support;
import javax.resource.spi.work.Work;
import javax.resource.spi.work.WorkAdapter;
import javax.resource.spi.work.WorkEvent;
import javax.resource.spi.work.WorkException;
import static org.junit.Assert.*;
/**
* ContextWorkAdapter
*
* @author <a href="mailto:vrastsel@redhat.com">Vladimir Rastseluev</a>
*/
public class ContextWorkAdapter extends WorkAdapter
{
/**timestamp for check*/
private long timeAccepted = 0;
/**timestamp for check*/
private long timeStarted = 0;
/**timestamp for check*/
private long timeRejected = 0;
/**timestamp for check*/
private long timeCompleted = 0;
/** exception */
private WorkException exception = null;
/**
* start string buffer
*/
private StringBuffer start = new StringBuffer();
/**
* done string buffer
*/
private StringBuffer done = new StringBuffer();
/**
* reject string buffer
*/
private StringBuffer reject = new StringBuffer();
/**
* accept work
*
* @param e workEvent
*/
@Override
public void workAccepted(WorkEvent e)
{
if (e.getType() != WorkEvent.WORK_ACCEPTED)
fail("Wrong accepted type");
timeAccepted = System.currentTimeMillis();
super.workAccepted(e);
}
/**
* start work
*
* @param e workEvent
*/
@Override
public void workStarted(WorkEvent e)
{
if (e.getType() != WorkEvent.WORK_STARTED)
fail("Wrong started type");
timeStarted = System.currentTimeMillis();
super.workStarted(e);
Work work = e.getWork();
if (work instanceof NestProviderWork)
{
NestProviderWork nw = (NestProviderWork) work;
start.append(nw.getName());
}
}
/**
* start work
*
* @param e workEvent
*/
@Override
public void workRejected(WorkEvent e)
{
if (e.getType() != WorkEvent.WORK_REJECTED)
fail("Wrong rejected type");
timeRejected = System.currentTimeMillis();
super.workRejected(e);
Work work = e.getWork();
if (work instanceof NestProviderWork)
{
NestProviderWork nw = (NestProviderWork) work;
reject.append(nw.getName());
}
}
/**
* complete work
*
* @param e workEvent
*/
@Override
public void workCompleted(WorkEvent e)
{
if (e.getType() != WorkEvent.WORK_COMPLETED)
fail("Wrong completed type");
timeCompleted = System.currentTimeMillis();
super.workCompleted(e);
Work work = e.getWork();
if (work instanceof NestProviderWork)
{
NestProviderWork nw = (NestProviderWork) work;
done.append(nw.getName());
exception = e.getException();
}
}
/**
* getter
* @return timestamp
*/
public long getTimeAccepted()
{
return timeAccepted;
}
/**
* getter
* @return timestamp
*/
public long getTimeStarted()
{
return timeStarted;
}
/**
* getter
* @return timestamp
*/
public long getTimeRejected()
{
return timeRejected;
}
/**
* getter
* @return timestamp
*/
public long getTimeCompleted()
{
return timeCompleted;
}
/**
* getter
* @return start buffer
*/
public String getStart()
{
return start.toString();
}
/**
* getter
* @return done buffer
*/
public String getDone()
{
return done.toString();
}
/**
* getter
* @return reject buffer
*/
public String getReject()
{
return reject.toString();
}
/**
* getter
* @return exception
*/
public WorkException getException()
{
return exception;
}
}