Skip to content

Commit

Permalink
add events and timer
Browse files Browse the repository at this point in the history
  • Loading branch information
pmuir committed Jun 18, 2010
1 parent 7e8c38e commit c70c878
Show file tree
Hide file tree
Showing 6 changed files with 116 additions and 18 deletions.
Expand Up @@ -184,4 +184,10 @@ public void setUser(String user)
{
this.user = user;
}

@Override
public String toString()
{
return "At " + getFriendlyDate() + " by " + getUser();
}
}
@@ -0,0 +1,45 @@
package org.jboss.weld.examples.pastecode.session;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import javax.ejb.Lock;
import javax.ejb.LockType;
import javax.ejb.Singleton;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.event.Observes;

import org.jboss.weld.examples.pastecode.model.CodeFragment;

@ApplicationScoped
//@Singleton
public class CodeFragmentLogger
{

private final List<CodeFragment> log;

public CodeFragmentLogger()
{
this.log = new ArrayList<CodeFragment>();
}

//@Lock(LockType.READ)
public List<CodeFragment> getLog()
{
return Collections.unmodifiableList(log);
}

//@Lock(LockType.WRITE)
public void clearLog()
{
this.log.clear();
}

//@Lock(LockType.WRITE)
public void addEntry(@Observes CodeFragment codeFragment)
{
this.log.add(codeFragment);
}

}
Expand Up @@ -29,6 +29,7 @@
import java.util.logging.Logger;

import javax.ejb.Stateful;
import javax.enterprise.event.Event;
import javax.enterprise.inject.Produces;
import javax.inject.Inject;
import javax.inject.Named;
Expand All @@ -55,6 +56,9 @@ public class CodeFragmentManagerImpl implements CodeFragmentManager

@Inject
private Logger log;

@Inject
private Event<CodeFragment> event;

@PersistenceContext
private EntityManager entityManager;
Expand Down Expand Up @@ -83,7 +87,7 @@ public String addCodeFragment(CodeFragment code, boolean privateFragment)
String hashValue = hashComputer.getHashValue(code);
code.setHash(hashValue);
entityManager.persist(code);
log.info("Added private pastecode: " + hashValue);
event.fire(code);
return hashValue;
}
catch (NoSuchAlgorithmException e)
Expand All @@ -96,9 +100,9 @@ public String addCodeFragment(CodeFragment code, boolean privateFragment)
else
{
entityManager.persist(code);
event.fire(code);
// Make sure we have the latest version (with the generated id!)
entityManager.refresh(code);
log.info("Added pastecode: " + code.getId());
return new Integer(code.getId()).toString();
}
}
Expand Down
@@ -0,0 +1,52 @@
package org.jboss.weld.examples.pastecode.session;

import java.util.logging.Logger;

import javax.annotation.Resource;
import javax.ejb.Stateless;
import javax.ejb.Timeout;
import javax.ejb.TimerService;
import javax.inject.Inject;

import org.jboss.weld.examples.pastecode.model.CodeFragment;

@Stateless
public class CodeFragmentPrinter
{

private static final int ONE_MINUTE = 60 * 1000;

@Resource
private TimerService timerService;

@Inject
private CodeFragmentLogger logger;

@Inject
private Logger log;

public void startTimer()
{
timerService.createTimer(ONE_MINUTE, ONE_MINUTE, null);
}

@Timeout
public void print()
{
if (logger.getLog().size() > 0)
{
log.info("These code fragments pasted in the last minute: ");
for (CodeFragment fragment : logger.getLog())
{
log.info(fragment.toString());
}
log.info("-----------------------------------------------------");
logger.clearLog();
}
else
{
log.info("No fragments pasted in the last minute");
}
}

}
Expand Up @@ -57,6 +57,9 @@ public class DatabasePopulater
@Inject
private CodeFragmentManager codeFragmentManager;

@Inject
private CodeFragmentPrinter codeFragmentPrinter;

private boolean populated;

// TODO @PostConstruct
Expand All @@ -67,6 +70,9 @@ public synchronized void populate()
return;
}

// Start the timer for the logger :-)
codeFragmentPrinter.startTimer();

try
{
String fileContent = readFileData(DATA_FILE_NAME);
Expand All @@ -92,7 +98,7 @@ public synchronized void populate()
}
catch (Exception e)
{
log.log(Level.WARNING, "Unable to read all records from " + DATA_FILE_NAME + " file");
log.log(Level.WARNING, "Unable to read all records from " + DATA_FILE_NAME + " file", e);
}

log.info("Successfully imported data!");
Expand Down

This file was deleted.

0 comments on commit c70c878

Please sign in to comment.