/******************************************************************************* | |
* Copyright (c) 1998, 2013 Oracle and/or its affiliates. All rights reserved. | |
* This program and the accompanying materials are made available under the | |
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 | |
* which accompanies this distribution. | |
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html | |
* and the Eclipse Distribution License is available at | |
* http://www.eclipse.org/org/documents/edl-v10.php. | |
* | |
* Contributors: | |
* Oracle - initial API and implementation from Oracle TopLink | |
******************************************************************************/ | |
package org.eclipse.persistence.testing.models.nativeapitest; | |
import java.util.*; | |
import javax.ejb.Remote; | |
import javax.ejb.Stateless; | |
// EclipseLink imports | |
import org.eclipse.persistence.sessions.server.*; | |
import org.eclipse.persistence.sessions.factories.SessionManager; | |
import org.eclipse.persistence.sessions.*; | |
import org.eclipse.persistence.expressions.Expression; | |
import org.eclipse.persistence.expressions.ExpressionBuilder; | |
import org.eclipse.persistence.queries.ReadAllQuery; | |
import org.eclipse.persistence.queries.ReadObjectQuery; | |
import org.eclipse.persistence.testing.models.nativeapitest.Employee; | |
/** | |
* EmployeeService session bean. | |
*/ | |
@Stateless(mappedName="EmployeeService") | |
@Remote(EmployeeService.class) | |
public class EmployeeServiceBean implements EmployeeService { | |
public List findAll() { | |
ClientSession clientSession = getSession().acquireClientSession(); | |
List collection = clientSession.readAllObjects(Employee.class); | |
return collection; | |
} | |
public Employee findById(int id) { | |
ReadObjectQuery readObjectQuery = new ReadObjectQuery(Employee.class); | |
ExpressionBuilder builder = new ExpressionBuilder(); | |
readObjectQuery.setSelectionCriteria(builder.get("id").equal(id)); | |
Employee employee = (Employee)getUnitOfWork().executeQuery(readObjectQuery); | |
employee.getAddress(); | |
return employee; | |
} | |
public Employee fetchById(int id) { | |
ReadObjectQuery readObjectQuery = new ReadObjectQuery(Employee.class); | |
ExpressionBuilder builder = new ExpressionBuilder(); | |
readObjectQuery.setSelectionCriteria(builder.get("id").equal(id)); | |
Employee employee = (Employee)getUnitOfWork().executeQuery(readObjectQuery); | |
employee.getAddress(); | |
employee.getManager(); | |
return employee; | |
} | |
public List findByFirstName(String fname) { | |
ReadAllQuery query = new ReadAllQuery(Employee.class); | |
ExpressionBuilder builder = query.getExpressionBuilder(); | |
Expression expression = builder.get("firstName").equal(fname); | |
query.setSelectionCriteria(expression); | |
List result = (List)getSession().executeQuery(query); | |
return result; | |
} | |
public void update(Employee employee) { | |
ClientSession clientSession = getSession().acquireClientSession(); | |
UnitOfWork uow = clientSession.getActiveUnitOfWork(); | |
uow.deepMergeClone(employee); | |
} | |
public int insert(Employee employee) { | |
ClientSession clientSession = getSession().acquireClientSession(); | |
UnitOfWork uow = clientSession.getActiveUnitOfWork(); | |
Employee emp = (Employee)uow.registerObject(employee); | |
uow.assignSequenceNumber(emp); | |
uow.commit(); | |
return emp.getId(); | |
} | |
public void delete(Employee employee) { | |
ClientSession clientSession = getSession().acquireClientSession(); | |
Employee employeeToDelete = (Employee) clientSession.readObject(employee); | |
UnitOfWork uow = clientSession.getActiveUnitOfWork(); | |
uow.deleteObject(employeeToDelete); | |
} | |
/** | |
* Return the EclipseLink Session | |
*/ | |
public Server getSession() { | |
return (Server)SessionManager.getManager().getSession("NativeAPITest", this.getClass().getClassLoader()); | |
} | |
/** | |
* Return a UnitOfWork for reading single objects and updating. | |
* This assumes the JTS has already created a unit of work through | |
* the Required attribute on the session bean. | |
*/ | |
public UnitOfWork getUnitOfWork(){ | |
ClientSession clientSession = getSession().acquireClientSession(); | |
return clientSession.getActiveUnitOfWork(); | |
} | |
} |