Author: husted
Date: Mon Dec 3 03:18:37 2007
New Revision: 600483
URL: http://svn.apache.org/viewvc?rev=600483&view=rev
Log:
WW-1399 Add interfaces for the entity objects, mainly to separate the concerns
of API and JavaDoc from the grunge work of the implementation, but also to
annoy Tom :)
Added:
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/UuidEntity.java
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/ProtocolImpl.java
- copied, changed from r599722,
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/Protocol.java
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/subscription/SubscriptionImpl.java
- copied, changed from r599470,
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/subscription/Subscription.java
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/user/UserImpl.java
- copied, changed from r599470,
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/user/User.java
struts/sandbox/trunk/jpa-mailreader/src/test/java/entity/BootstrapDataTest.java
- copied, changed from r599722,
struts/sandbox/trunk/jpa-mailreader/src/test/java/action/BootstrapDataTest.java
Removed:
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/Protocol.java
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/subscription/Subscription.java
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/user/User.java
struts/sandbox/trunk/jpa-mailreader/src/test/java/action/BootstrapDataTest.java
Modified:
struts/sandbox/trunk/jpa-mailreader/src/main/java/META-INF/persistence.xml
struts/sandbox/trunk/jpa-mailreader/src/main/java/action/Index.java
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/EntityAware.java
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/EntityInterceptor.java
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/EntityService.java
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/ProtocolService.java
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/ProtocolServiceImpl.java
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/ProtocolTypeConverter.java
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/subscription/SubscriptionServiceImpl.java
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/subscription/SubscriptionTypeConverter.java
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/user/UserServiceImpl.java
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/user/UserTypeConverter.java
struts/sandbox/trunk/jpa-mailreader/src/test/java/entity/UserServiceTest.java
struts/sandbox/trunk/jpa-mailreader/src/test/java/hello/MessageTest.java
Modified:
struts/sandbox/trunk/jpa-mailreader/src/main/java/META-INF/persistence.xml
URL:
http://svn.apache.org/viewvc/struts/sandbox/trunk/jpa-mailreader/src/main/java/META-INF/persistence.xml?rev=600483&r1=600482&r2=600483&view=diff
==============================================================================
--- struts/sandbox/trunk/jpa-mailreader/src/main/java/META-INF/persistence.xml
(original)
+++ struts/sandbox/trunk/jpa-mailreader/src/main/java/META-INF/persistence.xml
Mon Dec 3 03:18:37 2007
@@ -20,15 +20,18 @@
-->
<persistence-unit name="entity" transaction-type="RESOURCE_LOCAL">
- <provider>org.hibernate.ejb.HibernatePersistence</provider>
- <properties>
- <property name = "hibernate.connection.driver_class"
value = "org.apache.derby.jdbc.ClientDriver"/>
- <property name = "hibernate.connection.url" value =
"jdbc:derby://localhost:1527/mailreader;create=true"/>
- <property name = "hibernate.connection.username" value
= "app"/>
- <property name = "hibernate.connection.password" value
= "app"/>
- <property name = "hibernate.dialect"
value="org.hibernate.dialect.DerbyDialect"/>
- <property name = "hibernate.hbm2ddl.auto" value =
"update"/>
- </properties>
+ <provider>org.hibernate.ejb.HibernatePersistence</provider>
+ <properties>
+ <property name="hibernate.connection.driver_class"
+ value="org.apache.derby.jdbc.ClientDriver" />
+ <property name="hibernate.connection.url"
+
value="jdbc:derby://localhost:1527/mailreader;create=true" />
+ <property name="hibernate.connection.username"
value="app" />
+ <property name="hibernate.connection.password"
value="app" />
+ <property name="hibernate.dialect"
+ value="org.hibernate.dialect.DerbyDialect" />
+ <property name="hibernate.hbm2ddl.auto" value="update"
/>
+ </properties>
</persistence-unit>
-
+
</persistence>
Modified: struts/sandbox/trunk/jpa-mailreader/src/main/java/action/Index.java
URL:
http://svn.apache.org/viewvc/struts/sandbox/trunk/jpa-mailreader/src/main/java/action/Index.java?rev=600483&r1=600482&r2=600483&view=diff
==============================================================================
--- struts/sandbox/trunk/jpa-mailreader/src/main/java/action/Index.java
(original)
+++ struts/sandbox/trunk/jpa-mailreader/src/main/java/action/Index.java Mon Dec
3 03:18:37 2007
@@ -41,7 +41,7 @@
* <p>
* The application is entity or resource-orientated. Subclasses provide
* additional logic specific to each entity or resource. Persistence system
- * logic is delegated to a helper class for each entity. The Action classes
+ * logic is delegated to a service class for each entity. The Action classes
* interact only with the entity helpers, and not the underlying JPA.
* </p>
*/
Modified:
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/EntityAware.java
URL:
http://svn.apache.org/viewvc/struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/EntityAware.java?rev=600483&r1=600482&r2=600483&view=diff
==============================================================================
--- struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/EntityAware.java
(original)
+++ struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/EntityAware.java
Mon Dec 3 03:18:37 2007
@@ -22,7 +22,7 @@
/**
* <p>
- * Comparion interface to <code>EntityInterceptor</code> that provides access
+ * Companion interface to <code>EntityInterceptor</code> that provides access
* to an <code>EntityManager</code> for this thread.
* </p>
*/
Modified:
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/EntityInterceptor.java
URL:
http://svn.apache.org/viewvc/struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/EntityInterceptor.java?rev=600483&r1=600482&r2=600483&view=diff
==============================================================================
---
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/EntityInterceptor.java
(original)
+++
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/EntityInterceptor.java
Mon Dec 3 03:18:37 2007
@@ -26,7 +26,7 @@
/**
* <p>
- * A "single transaction per view" Interceptor for a JPA application.
+ * "Single transaction per view" Interceptor for a JPA application.
* </p>
* <p>
* This class creates an EntityManager for each thread, and begins a
transation.
Modified:
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/EntityService.java
URL:
http://svn.apache.org/viewvc/struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/EntityService.java?rev=600483&r1=600482&r2=600483&view=diff
==============================================================================
--- struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/EntityService.java
(original)
+++ struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/EntityService.java
Mon Dec 3 03:18:37 2007
@@ -27,25 +27,26 @@
/**
* <p>
- * A set of generic CRUD operations that can operate on any entity in the
- * default persistence unit.
+ * A set of generic CRUD methods that can operate on any entity in the default
+ * persistence unit.
* </p>
* <p>
* If an application needs only basic CRUD operations, this class (and its
* companion the <code>EntityManagerHelper</code>) may be the only "data
- * access object" the applications needs.
+ * access object" the application needs.
* </p>
* <p>
* This implementation delegates transaction management and exception handling
* to another component, such as an Interceptor or Filter, or the setUp and
- * tearDown methods of a TestCase. See <code>EntityInterceptor</code> for an
- * example.
+ * tearDown methods of a TestCase. See
+ * [EMAIL PROTECTED] entity.EntityInterceptor EntityInterceptor} and
+ * [EMAIL PROTECTED] entity.EntityTestCase EntityTestCase} for examples.
* </p>
* <p>
- * In extending this service class, or other service classes, we should avoid
+ * In extending this service class, or other service classes, we should avoid
* the <a href="http://www.martinfowler.com/bliki/AnemicDomainModel.html">
- * Anemic Domain Model anti-pattern</a>, and keep both business logic and
- * business state in the Entity objects.
+ * Anemic Domain Model anti-pattern</a>, and keep both business logic and
+ * business state in the Entity objects.
* </p>
*
*/
Added: struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/UuidEntity.java
URL:
http://svn.apache.org/viewvc/struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/UuidEntity.java?rev=600483&view=auto
==============================================================================
--- struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/UuidEntity.java
(added)
+++ struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/UuidEntity.java
Mon Dec 3 03:18:37 2007
@@ -0,0 +1,101 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package entity;
+
+import java.io.Serializable;
+import java.sql.Timestamp;
+import java.util.UUID;
+
+import javax.persistence.Column;
+import javax.persistence.Id;
+import javax.persistence.MappedSuperclass;
+import javax.persistence.Transient;
+import javax.persistence.Version;
+
[EMAIL PROTECTED]
+/**
+ * <p>
+ * POJO base class with helper methods for managing an ID property based on a
+ * universally unique identifier (UUID).
+ * </p>
+ * <p>
+ * UUIDs are particulary useful in RESTful application designs, since an object
+ * instance can assign its own primary key without interacting with a
+ * persistence unit. This base class is intended as a convenience only, and the
+ * class type should not be referred by the API. Instances of this class should
+ * be treated as ordinary POJOs (which they are!).
+ * </p>
+ */
+public class UuidEntity implements Serializable {
+
+ @Transient
+ private UUID uuid;
+
+ @Id
+ @Column(length = 36)
+ // @GeneratedValue(generator="system-uuid")
+ // @GenericGenerator(name="system-uuid", strategy = "uuid")
+ private String id;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String value) {
+ id = value;
+ }
+
+ @Version()
+ private Timestamp last_update;
+
+ public Timestamp getLastUpdate() {
+ return last_update;
+ }
+
+ public void setLastUpdate(Timestamp value) {
+ last_update = value;
+ }
+
+ public boolean equals(Object obj) {
+ if ((obj instanceof UuidEntity) && (getId() != null)) {
+ return getId().equals(((UuidEntity) obj).getId());
+ } else {
+ return false;
+ }
+ }
+
+ public int hashCode() {
+ if (getId() != null) {
+ if (uuid == null)
+ uuid = UUID.fromString(id);
+ return uuid.hashCode();
+ } else {
+ return super.hashCode();
+ }
+ }
+
+ public String toString() {
+ return "entity.UuidEntity[id=" + getId() + "]";
+ }
+
+ public UuidEntity() {
+ String id = UUID.randomUUID().toString();
+ setId(id);
+ }
+}
Copied:
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/ProtocolImpl.java
(from r599722,
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/Protocol.java)
URL:
http://svn.apache.org/viewvc/struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/ProtocolImpl.java?p2=struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/ProtocolImpl.java&p1=struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/Protocol.java&r1=599722&r2=600483&rev=600483&view=diff
==============================================================================
---
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/Protocol.java
(original)
+++
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/ProtocolImpl.java
Mon Dec 3 03:18:37 2007
@@ -29,9 +29,6 @@
/**
* <p>
- * Describes an email server protocol, such as POP or SMTP.
- * </p>
- * <p>
* JPA entity class for the <code>APP_PROTOCOL</code> table. This class
* contains sufficient detail to regenerate the database schema (top-down
* development). The annotation mode is by field.
@@ -39,9 +36,9 @@
*/
@Entity(name = "APP_PROTOCOL")
@NamedQueries( {
- @NamedQuery(name = Protocol.COUNT, query = Protocol.COUNT_QUERY),
- @NamedQuery(name = Protocol.FIND_ALL, query = Protocol.FIND_ALL_QUERY)
})
-public class Protocol extends UuidEntity implements Serializable {
+ @NamedQuery(name = ProtocolImpl.COUNT, query =
ProtocolImpl.COUNT_QUERY),
+ @NamedQuery(name = ProtocolImpl.FIND_ALL, query =
ProtocolImpl.FIND_ALL_QUERY) })
+public class ProtocolImpl extends UuidEntity implements Serializable, Protocol
{
// ---- STATICS ----
@@ -85,7 +82,7 @@
* Instantiate a default <code>Protocol</code> object.
* </p>
*/
- public Protocol() {
+ public ProtocolImpl() {
super();
}
@@ -94,7 +91,7 @@
* Instantiate a default <code>Protocol</code> object, and load values.
* </p>
*/
- public Protocol(String description) {
+ public ProtocolImpl(String description) {
super();
setDescription(description);
}
Modified:
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/ProtocolService.java
URL:
http://svn.apache.org/viewvc/struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/ProtocolService.java?rev=600483&r1=600482&r2=600483&view=diff
==============================================================================
---
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/ProtocolService.java
(original)
+++
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/ProtocolService.java
Mon Dec 3 03:18:37 2007
@@ -27,7 +27,7 @@
* <p>
* Facade providing custom operations involving the <code>Protocol</code>
* object.
- * <p>
+ * </p>
*/
// @WebService
public interface ProtocolService {
Modified:
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/ProtocolServiceImpl.java
URL:
http://svn.apache.org/viewvc/struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/ProtocolServiceImpl.java?rev=600483&r1=600482&r2=600483&view=diff
==============================================================================
---
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/ProtocolServiceImpl.java
(original)
+++
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/ProtocolServiceImpl.java
Mon Dec 3 03:18:37 2007
@@ -23,36 +23,34 @@
import java.util.List;
import java.util.Map;
-import javax.persistence.EntityManager;
import javax.persistence.PersistenceException;
import entity.EntityService;
-import entity.EntityManagerHelper;
/**
* <p>
- * Default JPA implementation of <code>ProtocolHelper</code>.
+ * Default JPA implementation of <code>ProtocolService</code>.
* </p>
*/
-// @WebService(serviceName = "protocol", endpointInterface =
"entity.protocol.ProtocolService")
-public class ProtocolServiceImpl extends EntityService implements
ProtocolService {
+// @WebService(serviceName = "protocol", endpointInterface =
+// "entity.protocol.ProtocolService")
+public class ProtocolServiceImpl extends EntityService implements
+ ProtocolService {
public int count() throws PersistenceException {
- Long count = (Long) singleResult(Protocol.COUNT, null, null);
+ Long count = (Long) singleResult(ProtocolImpl.COUNT, null, null);
int result = count.intValue();
return result;
}
public Protocol find(String value) {
- Protocol result = (Protocol) readEntity(Protocol.class, value);
+ Protocol result = (Protocol) readEntity(ProtocolImpl.class, value);
return result;
}
@SuppressWarnings("unchecked")
public List<Protocol> findAll() {
- EntityManager manager = EntityManagerHelper.getEntityManager();
- List<Protocol> protocols = manager.createNamedQuery(Protocol.FIND_ALL)
- .getResultList();
+ List<Protocol> protocols = resultList(ProtocolImpl.FIND_ALL, null,
null);
if (protocols == null) {
protocols = new ArrayList<Protocol>();
}
Modified:
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/ProtocolTypeConverter.java
URL:
http://svn.apache.org/viewvc/struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/ProtocolTypeConverter.java?rev=600483&r1=600482&r2=600483&view=diff
==============================================================================
---
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/ProtocolTypeConverter.java
(original)
+++
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/protocol/ProtocolTypeConverter.java
Mon Dec 3 03:18:37 2007
@@ -35,9 +35,9 @@
* persistence database, given a String ID.
*/
public Object convertFromString(Map context, String[] values, Class
toClass) {
- ProtocolService manager = new ProtocolServiceImpl();
+ ProtocolService service = new ProtocolServiceImpl();
String id = values[0];
- Protocol target = manager.find(id);
+ Protocol target = service.find(id);
return target;
}
@@ -45,7 +45,7 @@
* Provide the String ID for a <code>Protocol</code> object.
*/
public String convertToString(Map context, Object o) {
- Protocol value = (Protocol) o;
+ ProtocolImpl value = (ProtocolImpl) o;
String id = value.getId();
return id;
}
Copied:
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/subscription/SubscriptionImpl.java
(from r599470,
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/subscription/Subscription.java)
URL:
http://svn.apache.org/viewvc/struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/subscription/SubscriptionImpl.java?p2=struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/subscription/SubscriptionImpl.java&p1=struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/subscription/Subscription.java&r1=599470&r2=600483&rev=600483&view=diff
==============================================================================
---
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/subscription/Subscription.java
(original)
+++
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/subscription/SubscriptionImpl.java
Mon Dec 3 03:18:37 2007
@@ -19,6 +19,7 @@
package entity.subscription;
import java.io.Serializable;
+
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
@@ -29,65 +30,35 @@
import entity.UuidEntity;
import entity.protocol.Protocol;
+import entity.protocol.ProtocolImpl;
import entity.user.User;
+import entity.user.UserImpl;
/**
* <p>
- * An entity representing an email account.
- * </p>
- * <p>
- * JPA entity class for the <code>APP_SUBSCRIPTION</code> table. TThis class
+ * JPA entity class for the <code>APP_SUBSCRIPTION</code> table. This class
* contains sufficient detail to regenerate the database schema (top-down
* development). The annotation mode is by field.
* </p>
*/
@NamedQueries( {
- @NamedQuery(name = Subscription.COUNT, query =
Subscription.COUNT_QUERY),
- @NamedQuery(name = Subscription.FIND_ALL, query =
Subscription.FIND_ALL_QUERY),
- @NamedQuery(name = Subscription.FIND_BY_NAME, query =
Subscription.FIND_BY_NAME_QUERY) })
+ @NamedQuery(name = Subscription.COUNT, query =
SubscriptionImpl.COUNT_QUERY),
+ @NamedQuery(name = Subscription.FIND_ALL, query =
SubscriptionImpl.FIND_ALL_QUERY),
+ @NamedQuery(name = Subscription.FIND_BY_NAME, query =
SubscriptionImpl.FIND_BY_NAME_QUERY) })
@Entity(name = "APP_SUBSCRIPTION")
-public class Subscription extends UuidEntity implements Serializable {
+public class SubscriptionImpl extends UuidEntity implements Serializable,
+ Subscription {
// ---- STATICS ----
- /**
- * <p>
- * Named query for counting <code>Subscription</code> entities for all
- * Users.
- * </p>
- */
- public static final String COUNT = "Subscription.COUNT";
-
private static final String COUNT_QUERY = "SELECT COUNT(*) FROM
APP_SUBSCRIPTION";
- /**
- * <p>
- * Named query for finding a <code>User</code> by username.
- * </p>
- */
- public static final String FIND_ALL = "Subscription.FIND_ALL";
-
private static final String FIND_ALL_QUERY = "SELECT s FROM
APP_SUBSCRIPTION s";
- /**
- * <p>
- * Named query for finding a <code>User</code> by username.
- * </p>
- */
- public static final String FIND_BY_NAME = "Subscription.FIND_BY_HOST";
-
private static final String FIND_BY_NAME_QUERY = "SELECT s FROM
APP_SUBSCRIPTION s WHERE s.host = :host";
- /**
- * <p>
- * Token represnting the "host" or "name" attribute.
- * </p>
- */
- public static final String NAME = "host";
-
// ---- FIELDS ----
- @Column
private boolean auto_connect;
@Column(nullable = false)
@@ -96,12 +67,12 @@
@Column(nullable = false)
private String password;
- @JoinColumn(name = "protocol_id")
- @OneToOne
+ @JoinColumn
+ @OneToOne(targetEntity = ProtocolImpl.class)
private Protocol protocol;
- @JoinColumn(name = "user_id", nullable = false)
- @ManyToOne
+ @JoinColumn(nullable = false)
+ @ManyToOne(targetEntity = UserImpl.class)
private User user;
@Column(nullable = false)
@@ -164,7 +135,7 @@
* Instantiate a default <code>Subscription</code> object.
* </p>
*/
- public Subscription() {
+ public SubscriptionImpl() {
super();
}
@@ -175,7 +146,7 @@
* </p>
*
*/
- public Subscription(String host, User user, String username,
+ public SubscriptionImpl(String host, User user, String username,
String password, Protocol protocol, boolean autoConnect) {
super();
setHost(host);
Modified:
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/subscription/SubscriptionServiceImpl.java
URL:
http://svn.apache.org/viewvc/struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/subscription/SubscriptionServiceImpl.java?rev=600483&r1=600482&r2=600483&view=diff
==============================================================================
---
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/subscription/SubscriptionServiceImpl.java
(original)
+++
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/subscription/SubscriptionServiceImpl.java
Mon Dec 3 03:18:37 2007
@@ -18,23 +18,22 @@
*/
package entity.subscription;
-import javax.persistence.EntityManager;
import javax.persistence.PersistenceException;
import entity.EntityService;
-import entity.EntityManagerHelper;
/**
* <p>
- * Default JPA implementation of <code>UserHelper</code>.
+ * Default JPA implementation of <code>SubscriptionService</code>.
* </p>
*/
-// @WebService(serviceName = "subscription", endpointInterface =
"entity.subscription.SubscriptionService")
+// @WebService(serviceName = "subscription", endpointInterface =
+// "entity.subscription.SubscriptionService")
public class SubscriptionServiceImpl extends EntityService implements
SubscriptionService {
public int count() throws PersistenceException {
- Long count = (Long) singleResult(Subscription.COUNT, null, null);
+ Long count = (Long) singleResult(SubscriptionImpl.COUNT, null, null);
int result = count.intValue();
return result;
}
@@ -44,21 +43,20 @@
}
public Subscription delete(Subscription value) throws Exception {
- EntityManager manager = EntityManagerHelper.getEntityManager();
- manager.merge(value);
+ updateEntity(value);
value.getUser().removeSubscription(value);
return (Subscription) deleteEntity(value);
}
public Subscription find(String value) {
- Subscription result = (Subscription) readEntity(Subscription.class,
+ Subscription result = (Subscription) readEntity(SubscriptionImpl.class,
value);
return result;
}
public Subscription findByName(String value) {
Subscription result = (Subscription) singleResult(
- Subscription.FIND_BY_NAME, Subscription.NAME, value);
+ SubscriptionImpl.FIND_BY_NAME, SubscriptionImpl.NAME, value);
return result;
}
Modified:
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/subscription/SubscriptionTypeConverter.java
URL:
http://svn.apache.org/viewvc/struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/subscription/SubscriptionTypeConverter.java?rev=600483&r1=600482&r2=600483&view=diff
==============================================================================
---
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/subscription/SubscriptionTypeConverter.java
(original)
+++
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/subscription/SubscriptionTypeConverter.java
Mon Dec 3 03:18:37 2007
@@ -36,9 +36,9 @@
* persistence database, fiven a host name.
*/
public Object convertFromString(Map context, String[] values, Class
toClass) {
- SubscriptionService manager = new SubscriptionServiceImpl();
+ SubscriptionService service = new SubscriptionServiceImpl();
String name = String.valueOf(values[0]);
- Subscription result = manager.findByName(name);
+ Subscription result = service.findByName(name);
return result;
}
Copied:
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/user/UserImpl.java
(from r599470,
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/user/User.java)
URL:
http://svn.apache.org/viewvc/struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/user/UserImpl.java?p2=struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/user/UserImpl.java&p1=struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/user/User.java&r1=599470&r2=600483&rev=600483&view=diff
==============================================================================
--- struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/user/User.java
(original)
+++ struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/user/UserImpl.java
Mon Dec 3 03:18:37 2007
@@ -32,13 +32,10 @@
import entity.UuidEntity;
import entity.subscription.Subscription;
+import entity.subscription.SubscriptionImpl;
/**
* <p>
- * Entity representing an account that maintains zero or more
- * <code>Subscription</code>s.
- * </p>
- * <p>
* JPA entity class for the <code>APP_USER</code> table. This class contains
* sufficient detail to regenerate the database schema (top-down development).
* The annotation mode is by field.
@@ -46,47 +43,19 @@
*/
@Entity(name = "APP_USER")
@NamedQueries( {
- @NamedQuery(name = User.FIND_ALL, query = User.FIND_ALL_QUERY),
- @NamedQuery(name = User.FIND_BY_NAME, query = User.FIND_BY_NAME_QUERY),
- @NamedQuery(name = User.COUNT, query = User.COUNT_QUERY) })
-public class User extends UuidEntity implements Serializable {
+ @NamedQuery(name = User.FIND_ALL, query = UserImpl.FIND_ALL_QUERY),
+ @NamedQuery(name = User.FIND_BY_NAME, query =
UserImpl.FIND_BY_NAME_QUERY),
+ @NamedQuery(name = User.COUNT, query = UserImpl.COUNT_QUERY) })
+public class UserImpl extends UuidEntity implements Serializable, User {
// ---- STATICS ----
- /**
- * <p>
- * Named query for counting <code>User</code> entities.
- * </p>
- */
- public static final String COUNT = "User.COUNT";
-
private static final String COUNT_QUERY = "SELECT COUNT(*) FROM APP_USER";
- /**
- * <p>
- * Named query for finding a <code>User</code> by username.
- * </p>
- */
- public static final String FIND_ALL = "User.FIND_ALL";
-
private static final String FIND_ALL_QUERY = "SELECT u FROM APP_USER u";
- /**
- * <p>
- * Named query for finding a <code>User</code> by username.
- * </p>
- */
- public static final String FIND_BY_NAME = "User.FIND_BY_USERNAME";
-
private static final String FIND_BY_NAME_QUERY = "SELECT u FROM APP_USER u
WHERE u.username = :username";
- /**
- * <p>
- * Token representing the "username" attribute.
- * </p>
- */
- static final String NAME = "username";
-
// --- FIELDS ----
@Column(length = 64)
@@ -101,7 +70,7 @@
@Column(length = 64)
private String reply_to_address;
- @OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
+ @OneToMany(mappedBy = "user", cascade = CascadeType.ALL, targetEntity =
SubscriptionImpl.class)
private List<Subscription> subscriptions;
@Column(length = 16, nullable = false, unique = true)
@@ -181,15 +150,6 @@
// ---- METHODS ----
- /**
- * <p>
- * Add the specified <code>Subscription</code> to the set of subscriptions
- * associated with this <code>User</code>.
- * </p>
- * <p>
- * A duplicate <code>Subscription</code> is not added but quietly ignored.
- * </p>
- */
public void addSubscription(Subscription subscription) {
List<Subscription> subscriptions = getSubscriptions();
if (subscriptions == null) {
@@ -202,15 +162,6 @@
}
}
- /**
- * <p>
- * Add the specified <code>Subscriptions</code> to the set of
- * subscriptions associated with this <code>User</code>.
- * </p>
- * <p>
- * A duplicate <code>Subscription</code> is not added but quietly ignored.
- * </p>
- */
public void addSubscriptions(List<Subscription> subscriptions) {
if (subscriptions == null)
return;
@@ -219,15 +170,6 @@
}
}
- /**
- * <p>
- * Remove the specified <code>Subscription</code> from the set of
- * subscriptions associated with this <code>User</code>.
- * </p>
- * <p>
- * A duplicate <code>Subscription</code> is not added but quietly ignored.
- * </p>
- */
public void removeSubscription(Subscription subscription) {
List<Subscription> subscriptions = getSubscriptions();
if (subscriptions.contains(subscription)) {
@@ -240,7 +182,7 @@
* Instantiate a default <code>User</code> object.
* </p>
*/
- public User() {
+ public UserImpl() {
super();
}
@@ -252,7 +194,7 @@
* This constructor does not set the ID value.
* </p>
*/
- public User(String username, String password) {
+ public UserImpl(String username, String password) {
super();
setUsername(username);
setPassword(password);
@@ -263,7 +205,7 @@
* Instantiate a <code>User</code> object, and load values.
* </p>
*/
- public User(String username, String password, String fullName,
+ public UserImpl(String username, String password, String fullName,
String fromAddress, String replyToAddress) {
super();
setUsername(username);
Modified:
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/user/UserServiceImpl.java
URL:
http://svn.apache.org/viewvc/struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/user/UserServiceImpl.java?rev=600483&r1=600482&r2=600483&view=diff
==============================================================================
---
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/user/UserServiceImpl.java
(original)
+++
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/user/UserServiceImpl.java
Mon Dec 3 03:18:37 2007
@@ -27,11 +27,12 @@
* Default JPA implementation of <code>UserHelper</code>.
* </p>
*/
-// @WebService(serviceName = "user", endpointInterface =
"entity.user.UserSession")
+// @WebService(serviceName = "user", endpointInterface =
+// "entity.user.UserSession")
public class UserServiceImpl extends EntityService implements UserService {
public int count() throws PersistenceException {
- Long count = (Long) singleResult(User.COUNT, null, null);
+ Long count = (Long) singleResult(UserImpl.COUNT, null, null);
int result = count.intValue();
return result;
}
@@ -45,12 +46,13 @@
}
public User find(String value) {
- User result = (User) readEntity(User.class, value);
+ User result = (User) readEntity(UserImpl.class, value);
return result;
}
- public User findByName(String value) {
- User result = (User) singleResult(User.FIND_BY_NAME, User.NAME, value);
+ public UserImpl findByName(String value) {
+ UserImpl result = (UserImpl) singleResult(UserImpl.FIND_BY_NAME,
+ UserImpl.NAME, value);
return result;
}
Modified:
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/user/UserTypeConverter.java
URL:
http://svn.apache.org/viewvc/struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/user/UserTypeConverter.java?rev=600483&r1=600482&r2=600483&view=diff
==============================================================================
---
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/user/UserTypeConverter.java
(original)
+++
struts/sandbox/trunk/jpa-mailreader/src/main/java/entity/user/UserTypeConverter.java
Mon Dec 3 03:18:37 2007
@@ -37,9 +37,9 @@
* </p>
*/
public Object convertFromString(Map context, String[] values, Class
toClass) {
- UserService manager = new UserServiceImpl();
+ UserService service = new UserServiceImpl();
String name = values[0];
- User result = manager.findByName(name);
+ User result = service.findByName(name);
return result;
}
Copied:
struts/sandbox/trunk/jpa-mailreader/src/test/java/entity/BootstrapDataTest.java
(from r599722,
struts/sandbox/trunk/jpa-mailreader/src/test/java/action/BootstrapDataTest.java)
URL:
http://svn.apache.org/viewvc/struts/sandbox/trunk/jpa-mailreader/src/test/java/entity/BootstrapDataTest.java?p2=struts/sandbox/trunk/jpa-mailreader/src/test/java/entity/BootstrapDataTest.java&p1=struts/sandbox/trunk/jpa-mailreader/src/test/java/action/BootstrapDataTest.java&r1=599722&r2=600483&rev=600483&view=diff
==============================================================================
---
struts/sandbox/trunk/jpa-mailreader/src/test/java/action/BootstrapDataTest.java
(original)
+++
struts/sandbox/trunk/jpa-mailreader/src/test/java/entity/BootstrapDataTest.java
Mon Dec 3 03:18:37 2007
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package action;
+package entity;
import java.util.ArrayList;
import java.util.List;
@@ -26,10 +26,12 @@
import javax.persistence.EntityTransaction;
import junit.framework.TestCase;
-import entity.EntityManagerHelper;
import entity.protocol.Protocol;
+import entity.protocol.ProtocolImpl;
import entity.subscription.Subscription;
+import entity.subscription.SubscriptionImpl;
import entity.user.User;
+import entity.user.UserImpl;
public class BootstrapDataTest extends TestCase {
@@ -63,17 +65,17 @@
// Create the basic protocol data
Protocol protocol1 = null;
- protocol1 = new Protocol();
+ protocol1 = new ProtocolImpl();
protocol1.setId(getUUID());
protocol1.setDescription("IMAP Protocol");
em.persist(protocol1);
- Protocol protocol2 = new Protocol();
+ Protocol protocol2 = new ProtocolImpl();
protocol2.setId(getUUID());
protocol2.setDescription("POP3 Protocol");
em.persist(protocol2);
// Set up the initial user and subscriptions
- User user = new User();
+ User user = new UserImpl();
user.setId(getUUID());
user.setUsername("user");
user.setPassword("pass");
@@ -82,7 +84,7 @@
List<Subscription> list = new ArrayList<Subscription>();
user.setSubscriptions(list);
Subscription sub = null;
- sub = new Subscription();
+ sub = new SubscriptionImpl();
sub.setId(getUUID());
sub.setUser(user);
sub.setHost("mail.yahoo.com");
@@ -90,7 +92,7 @@
sub.setUsername("jquser");
sub.setPassword("foo");
list.add(sub);
- sub = new Subscription();
+ sub = new SubscriptionImpl();
sub.setId(getUUID());
sub.setUser(user);
sub.setHost("mail.hotmail.com");
@@ -104,7 +106,7 @@
et.commit();
// Test commit
- List<Protocol> protocols2 = em.createNamedQuery(Protocol.FIND_ALL)
+ List<Protocol> protocols2 = em.createNamedQuery(ProtocolImpl.FIND_ALL)
.getResultList();
boolean updated = ((protocols2 != null) && (protocols2.size() > 0));
assertTrue("Commit not successful!", updated);
Modified:
struts/sandbox/trunk/jpa-mailreader/src/test/java/entity/UserServiceTest.java
URL:
http://svn.apache.org/viewvc/struts/sandbox/trunk/jpa-mailreader/src/test/java/entity/UserServiceTest.java?rev=600483&r1=600482&r2=600483&view=diff
==============================================================================
---
struts/sandbox/trunk/jpa-mailreader/src/test/java/entity/UserServiceTest.java
(original)
+++
struts/sandbox/trunk/jpa-mailreader/src/test/java/entity/UserServiceTest.java
Mon Dec 3 03:18:37 2007
@@ -11,7 +11,9 @@
import entity.protocol.ProtocolService;
import entity.protocol.ProtocolServiceImpl;
import entity.subscription.Subscription;
+import entity.subscription.SubscriptionImpl;
import entity.user.User;
+import entity.user.UserImpl;
import entity.user.UserService;
import entity.user.UserServiceImpl;
@@ -26,14 +28,14 @@
beforeCount = helper.count();
}
- private User newUser() {
- return new User("user_" + base, "pass_" + base);
+ private UserImpl newUser() {
+ return new UserImpl("user_" + base, "pass_" + base);
}
public void testCount() throws Exception {
EntityManager manager = EntityManagerHelper.getEntityManager();
Object result = null;
- Query query = manager.createNamedQuery(User.COUNT);
+ Query query = manager.createNamedQuery(UserImpl.COUNT);
try {
result = query.getSingleResult();
} catch (NoResultException e) {
@@ -45,7 +47,7 @@
}
public void testCreate() throws Exception {
- User user = newUser();
+ UserImpl user = newUser();
String before = user.getId();
assertTrue("ID not assigned on New", isNotEmpty(before));
helper.create(user);
@@ -66,29 +68,27 @@
String base = String.valueOf(i + 1);
autoConnect = !autoConnect;
int protocolIndex = (i % protocolMax);
- Subscription sub = new Subscription("host_" + base, user, "user_"
- + base, "pass_" + base, protocols.get(protocolIndex),
- autoConnect);
+ SubscriptionImpl sub = new SubscriptionImpl("host_" + base, user,
+ "user_" + base, "pass_" + base, protocols
+ .get(protocolIndex), autoConnect);
subscriptions.add(sub);
}
return subscriptions;
}
public void testCreateWithSubscriptions() throws Exception {
- User user = newUser();
+ UserImpl user = newUser();
helper.create(user);
List<Subscription> subscriptions = getSubscriptions(user);
user.addSubscriptions(subscriptions);
helper.update(user);
assertTrue("Expected ID", user.getId() != null);
assertTrue(user.getSubscriptions() != null);
- String qname =user.getQualifiedName();
- assertTrue(qname !=null);
}
public void testCreateDelete() throws Exception {
// rollback = true;
- User user = new User();
+ User user = new UserImpl();
user.setUsername("user_" + base);
user.setPassword("pass_" + base);
helper.create(user);
Modified:
struts/sandbox/trunk/jpa-mailreader/src/test/java/hello/MessageTest.java
URL:
http://svn.apache.org/viewvc/struts/sandbox/trunk/jpa-mailreader/src/test/java/hello/MessageTest.java?rev=600483&r1=600482&r2=600483&view=diff
==============================================================================
--- struts/sandbox/trunk/jpa-mailreader/src/test/java/hello/MessageTest.java
(original)
+++ struts/sandbox/trunk/jpa-mailreader/src/test/java/hello/MessageTest.java
Mon Dec 3 03:18:37 2007
@@ -63,22 +63,22 @@
public void testUpdate() throws Exception {
final String MESSAGE = "Update me!";
final String UPDATE = "Hey! I've been updated!";
-
+
Message message = new Message(MESSAGE);
manager.persist(message);
- manager.flush();
+ manager.flush();
+
+ Long id = message.getId();
+ Message update = manager.find(Message.class, id);
+ assertSame("Expected same instance", message, update);
- Long id = message.getId();
- Message update = manager.find(Message.class, id);
- assertSame("Expected same instance",message,update);
-
update.setText(UPDATE);
manager.flush();
-
+
Message result = manager.find(Message.class, id);
- assertEquals(UPDATE,result.getText());
+ assertEquals(UPDATE, result.getText());
}
-
+
public void testCreateDelete() throws Exception {
final String MESSAGE = "Delete me!";
Message message = new Message(MESSAGE);