From fe9c99046f93cbc5a14d7b5314dc1c5c06ae2b80 Mon Sep 17 00:00:00 2001 From: Kai Moritz <kai@juplo.de> Date: Fri, 5 Apr 2019 13:03:44 +0200 Subject: [PATCH] Added tutorials of the hibernate-release 5.0.12.Final This commit contains the unchanged tutorials from the 5.0.12-Release See: http://docs.jboss.org/hibernate/orm/5.0/quickstart/html/#preface Download: http://docs.jboss.org/hibernate/orm/5.0/quickstart/html/hibernate-tutorials.zip --- src/it/tutorials-5.0.12/annotations/pom.xml | 28 +++++ .../AnnotationsIllustrationTest.java | 89 +++++++++++++++ .../hibernate/tutorial/annotations/Event.java | 83 ++++++++++++++ .../src/test/resources/hibernate.cfg.xml | 42 +++++++ src/it/tutorials-5.0.12/basic/pom.xml | 28 +++++ .../org/hibernate/tutorial/hbm/Event.hbm.xml | 23 ++++ .../org/hibernate/tutorial/hbm/Event.java | 67 +++++++++++ .../hbm/NativeApiIllustrationTest.java | 88 +++++++++++++++ .../src/test/resources/hibernate.cfg.xml | 41 +++++++ src/it/tutorials-5.0.12/entitymanager/pom.xml | 36 ++++++ .../em/EntityManagerIllustrationTest.java | 73 ++++++++++++ .../java/org/hibernate/tutorial/em/Event.java | 83 ++++++++++++++ .../test/resources/META-INF/persistence.xml | 31 ++++++ src/it/tutorials-5.0.12/envers/pom.xml | 41 +++++++ .../envers/EnversIllustrationTest.java | 105 ++++++++++++++++++ .../org/hibernate/tutorial/envers/Event.java | 92 +++++++++++++++ .../test/resources/META-INF/persistence.xml | 31 ++++++ .../tutorials-5.0.12/osgi/datasource-h2.xml | 28 +++++ .../osgi/managed-jpa/features.xml | 81 ++++++++++++++ .../tutorials-5.0.12/osgi/managed-jpa/pom.xml | 70 ++++++++++++ .../hibernate/osgitest/DataPointService.java | 37 ++++++ .../osgitest/DataPointServiceImpl.java | 58 ++++++++++ .../osgitest/command/AddCommand.java | 44 ++++++++ .../osgitest/command/DeleteAllCommand.java | 37 ++++++ .../osgitest/command/GetAllCommand.java | 43 +++++++ .../hibernate/osgitest/entity/DataPoint.java | 53 +++++++++ .../main/resources/META-INF/persistence.xml | 21 ++++ .../OSGI-INF/blueprint/blueprint.xml | 46 ++++++++ src/it/tutorials-5.0.12/osgi/pom.xml | 35 ++++++ .../osgi/unmanaged-jpa/features.xml | 47 ++++++++ .../osgi/unmanaged-jpa/pom.xml | 81 ++++++++++++++ .../hibernate/osgitest/DataPointService.java | 41 +++++++ .../osgitest/DataPointServiceImpl.java | 78 +++++++++++++ .../org/hibernate/osgitest/HibernateUtil.java | 57 ++++++++++ .../hibernate/osgitest/TestIntegrator.java | 45 ++++++++ .../TestStrategyRegistrationProvider.java | 37 ++++++ .../osgitest/TestTypeContributor.java | 37 ++++++ .../osgitest/command/AddCommand.java | 44 ++++++++ .../osgitest/command/DeleteAllCommand.java | 37 ++++++ .../osgitest/command/GetAllCommand.java | 43 +++++++ .../osgitest/command/UpdateCommand.java | 47 ++++++++ .../hibernate/osgitest/entity/DataPoint.java | 53 +++++++++ .../main/resources/META-INF/persistence.xml | 24 ++++ .../OSGI-INF/blueprint/blueprint.xml | 50 +++++++++ .../osgi/unmanaged-native/features.xml | 79 +++++++++++++ .../osgi/unmanaged-native/pom.xml | 89 +++++++++++++++ .../hibernate/osgitest/DataPointService.java | 47 ++++++++ .../osgitest/DataPointServiceImpl.java | 103 +++++++++++++++++ .../org/hibernate/osgitest/HibernateUtil.java | 53 +++++++++ .../hibernate/osgitest/TestIntegrator.java | 45 ++++++++ .../TestStrategyRegistrationProvider.java | 37 ++++++ .../osgitest/TestTypeContributor.java | 37 ++++++ .../osgitest/command/AddCommand.java | 44 ++++++++ .../osgitest/command/DeleteAllCommand.java | 37 ++++++ .../osgitest/command/GetAllCommand.java | 43 +++++++ .../osgitest/command/GetCommand.java | 43 +++++++ .../osgitest/command/GetRevisionsCommand.java | 48 ++++++++ .../osgitest/command/LoadCommand.java | 43 +++++++ .../osgitest/command/UpdateCommand.java | 47 ++++++++ .../hibernate/osgitest/entity/DataPoint.java | 58 ++++++++++ .../OSGI-INF/blueprint/blueprint.xml | 65 +++++++++++ .../src/main/resources/ehcache.xml | 94 ++++++++++++++++ .../src/main/resources/hibernate.cfg.xml | 52 +++++++++ .../src/main/resources/pool-one.properties | 13 +++ src/it/tutorials-5.0.12/pom.xml | 77 +++++++++++++ 65 files changed, 3409 insertions(+) create mode 100644 src/it/tutorials-5.0.12/annotations/pom.xml create mode 100644 src/it/tutorials-5.0.12/annotations/src/test/java/org/hibernate/tutorial/annotations/AnnotationsIllustrationTest.java create mode 100644 src/it/tutorials-5.0.12/annotations/src/test/java/org/hibernate/tutorial/annotations/Event.java create mode 100644 src/it/tutorials-5.0.12/annotations/src/test/resources/hibernate.cfg.xml create mode 100644 src/it/tutorials-5.0.12/basic/pom.xml create mode 100644 src/it/tutorials-5.0.12/basic/src/test/java/org/hibernate/tutorial/hbm/Event.hbm.xml create mode 100644 src/it/tutorials-5.0.12/basic/src/test/java/org/hibernate/tutorial/hbm/Event.java create mode 100644 src/it/tutorials-5.0.12/basic/src/test/java/org/hibernate/tutorial/hbm/NativeApiIllustrationTest.java create mode 100644 src/it/tutorials-5.0.12/basic/src/test/resources/hibernate.cfg.xml create mode 100644 src/it/tutorials-5.0.12/entitymanager/pom.xml create mode 100644 src/it/tutorials-5.0.12/entitymanager/src/test/java/org/hibernate/tutorial/em/EntityManagerIllustrationTest.java create mode 100644 src/it/tutorials-5.0.12/entitymanager/src/test/java/org/hibernate/tutorial/em/Event.java create mode 100644 src/it/tutorials-5.0.12/entitymanager/src/test/resources/META-INF/persistence.xml create mode 100644 src/it/tutorials-5.0.12/envers/pom.xml create mode 100644 src/it/tutorials-5.0.12/envers/src/test/java/org/hibernate/tutorial/envers/EnversIllustrationTest.java create mode 100644 src/it/tutorials-5.0.12/envers/src/test/java/org/hibernate/tutorial/envers/Event.java create mode 100644 src/it/tutorials-5.0.12/envers/src/test/resources/META-INF/persistence.xml create mode 100644 src/it/tutorials-5.0.12/osgi/datasource-h2.xml create mode 100644 src/it/tutorials-5.0.12/osgi/managed-jpa/features.xml create mode 100644 src/it/tutorials-5.0.12/osgi/managed-jpa/pom.xml create mode 100644 src/it/tutorials-5.0.12/osgi/managed-jpa/src/main/java/org/hibernate/osgitest/DataPointService.java create mode 100644 src/it/tutorials-5.0.12/osgi/managed-jpa/src/main/java/org/hibernate/osgitest/DataPointServiceImpl.java create mode 100644 src/it/tutorials-5.0.12/osgi/managed-jpa/src/main/java/org/hibernate/osgitest/command/AddCommand.java create mode 100644 src/it/tutorials-5.0.12/osgi/managed-jpa/src/main/java/org/hibernate/osgitest/command/DeleteAllCommand.java create mode 100644 src/it/tutorials-5.0.12/osgi/managed-jpa/src/main/java/org/hibernate/osgitest/command/GetAllCommand.java create mode 100644 src/it/tutorials-5.0.12/osgi/managed-jpa/src/main/java/org/hibernate/osgitest/entity/DataPoint.java create mode 100644 src/it/tutorials-5.0.12/osgi/managed-jpa/src/main/resources/META-INF/persistence.xml create mode 100644 src/it/tutorials-5.0.12/osgi/managed-jpa/src/main/resources/OSGI-INF/blueprint/blueprint.xml create mode 100644 src/it/tutorials-5.0.12/osgi/pom.xml create mode 100644 src/it/tutorials-5.0.12/osgi/unmanaged-jpa/features.xml create mode 100644 src/it/tutorials-5.0.12/osgi/unmanaged-jpa/pom.xml create mode 100644 src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/DataPointService.java create mode 100644 src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/DataPointServiceImpl.java create mode 100644 src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/HibernateUtil.java create mode 100644 src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/TestIntegrator.java create mode 100644 src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/TestStrategyRegistrationProvider.java create mode 100644 src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/TestTypeContributor.java create mode 100644 src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/command/AddCommand.java create mode 100644 src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/command/DeleteAllCommand.java create mode 100644 src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/command/GetAllCommand.java create mode 100644 src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/command/UpdateCommand.java create mode 100644 src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/entity/DataPoint.java create mode 100644 src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/resources/META-INF/persistence.xml create mode 100644 src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/resources/OSGI-INF/blueprint/blueprint.xml create mode 100644 src/it/tutorials-5.0.12/osgi/unmanaged-native/features.xml create mode 100644 src/it/tutorials-5.0.12/osgi/unmanaged-native/pom.xml create mode 100644 src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/DataPointService.java create mode 100644 src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/DataPointServiceImpl.java create mode 100644 src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/HibernateUtil.java create mode 100644 src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/TestIntegrator.java create mode 100644 src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/TestStrategyRegistrationProvider.java create mode 100644 src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/TestTypeContributor.java create mode 100644 src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/command/AddCommand.java create mode 100644 src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/command/DeleteAllCommand.java create mode 100644 src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/command/GetAllCommand.java create mode 100644 src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/command/GetCommand.java create mode 100644 src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/command/GetRevisionsCommand.java create mode 100644 src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/command/LoadCommand.java create mode 100644 src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/command/UpdateCommand.java create mode 100644 src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/entity/DataPoint.java create mode 100644 src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/resources/OSGI-INF/blueprint/blueprint.xml create mode 100644 src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/resources/ehcache.xml create mode 100644 src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/resources/hibernate.cfg.xml create mode 100644 src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/resources/pool-one.properties create mode 100644 src/it/tutorials-5.0.12/pom.xml diff --git a/src/it/tutorials-5.0.12/annotations/pom.xml b/src/it/tutorials-5.0.12/annotations/pom.xml new file mode 100644 index 00000000..093eca6e --- /dev/null +++ b/src/it/tutorials-5.0.12/annotations/pom.xml @@ -0,0 +1,28 @@ +<?xml version="1.0"?> +<!-- + ~ Hibernate, Relational Persistence for Idiomatic Java + ~ + ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later. + ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. + --> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.hibernate.tutorials</groupId> + <artifactId>hibernate-tutorials</artifactId> + <version>5.0.12.Final</version> + <relativePath>../pom.xml</relativePath> + </parent> + + <artifactId>hibernate-tutorial-annotations</artifactId> + <name>Hibernate Annotations Tutorial</name> + <description>Hibernate tutorial illustrating the use of native APIs and annotations for mapping metadata</description> + + <properties> + <!-- Skip artifact deployment --> + <maven.deploy.skip>true</maven.deploy.skip> + </properties> + +</project> diff --git a/src/it/tutorials-5.0.12/annotations/src/test/java/org/hibernate/tutorial/annotations/AnnotationsIllustrationTest.java b/src/it/tutorials-5.0.12/annotations/src/test/java/org/hibernate/tutorial/annotations/AnnotationsIllustrationTest.java new file mode 100644 index 00000000..33e28629 --- /dev/null +++ b/src/it/tutorials-5.0.12/annotations/src/test/java/org/hibernate/tutorial/annotations/AnnotationsIllustrationTest.java @@ -0,0 +1,89 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * Copyright (c) 2010, Red Hat Inc. or third-party contributors as + * indicated by the @author tags or express copyright attribution + * statements applied by the authors. All third-party contributions are + * distributed under license by Red Hat Inc. + * + * This copyrighted material is made available to anyone wishing to use, modify, + * copy, or redistribute it subject to the terms and conditions of the GNU + * Lesser General Public License, as published by the Free Software Foundation. + * + * This program 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 GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this distribution; if not, write to: + * Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor + * Boston, MA 02110-1301 USA + */ +package org.hibernate.tutorial.annotations; + +import java.util.Date; +import java.util.List; + +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.boot.MetadataSources; +import org.hibernate.boot.registry.StandardServiceRegistry; +import org.hibernate.boot.registry.StandardServiceRegistryBuilder; + +import junit.framework.TestCase; + +/** + * Illustrates the use of Hibernate native APIs. The code here is unchanged from the {@code basic} example, the + * only difference being the use of annotations to supply the metadata instead of Hibernate mapping files. + * + * @author Steve Ebersole + */ +public class AnnotationsIllustrationTest extends TestCase { + private SessionFactory sessionFactory; + + @Override + protected void setUp() throws Exception { + // A SessionFactory is set up once for an application! + final StandardServiceRegistry registry = new StandardServiceRegistryBuilder() + .configure() // configures settings from hibernate.cfg.xml + .build(); + try { + sessionFactory = new MetadataSources( registry ).buildMetadata().buildSessionFactory(); + } + catch (Exception e) { + // The registry would be destroyed by the SessionFactory, but we had trouble building the SessionFactory + // so destroy it manually. + StandardServiceRegistryBuilder.destroy( registry ); + } + } + + @Override + protected void tearDown() throws Exception { + if ( sessionFactory != null ) { + sessionFactory.close(); + } + } + + @SuppressWarnings({ "unchecked" }) + public void testBasicUsage() { + // create a couple of events... + Session session = sessionFactory.openSession(); + session.beginTransaction(); + session.save( new Event( "Our very first event!", new Date() ) ); + session.save( new Event( "A follow up event", new Date() ) ); + session.getTransaction().commit(); + session.close(); + + // now lets pull events from the database and list them + session = sessionFactory.openSession(); + session.beginTransaction(); + List result = session.createQuery( "from Event" ).list(); + for ( Event event : (List<Event>) result ) { + System.out.println( "Event (" + event.getDate() + ") : " + event.getTitle() ); + } + session.getTransaction().commit(); + session.close(); + } +} diff --git a/src/it/tutorials-5.0.12/annotations/src/test/java/org/hibernate/tutorial/annotations/Event.java b/src/it/tutorials-5.0.12/annotations/src/test/java/org/hibernate/tutorial/annotations/Event.java new file mode 100644 index 00000000..c66349f9 --- /dev/null +++ b/src/it/tutorials-5.0.12/annotations/src/test/java/org/hibernate/tutorial/annotations/Event.java @@ -0,0 +1,83 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * Copyright (c) 2010, Red Hat Inc. or third-party contributors as + * indicated by the @author tags or express copyright attribution + * statements applied by the authors. All third-party contributions are + * distributed under license by Red Hat Inc. + * + * This copyrighted material is made available to anyone wishing to use, modify, + * copy, or redistribute it subject to the terms and conditions of the GNU + * Lesser General Public License, as published by the Free Software Foundation. + * + * This program 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 GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this distribution; if not, write to: + * Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor + * Boston, MA 02110-1301 USA + */ +package org.hibernate.tutorial.annotations; + +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +import org.hibernate.annotations.GenericGenerator; + +@Entity +@Table( name = "EVENTS" ) +public class Event { + private Long id; + + private String title; + private Date date; + + public Event() { + // this form used by Hibernate + } + + public Event(String title, Date date) { + // for application use, to create new events + this.title = title; + this.date = date; + } + + @Id + @GeneratedValue(generator="increment") + @GenericGenerator(name="increment", strategy = "increment") + public Long getId() { + return id; + } + + private void setId(Long id) { + this.id = id; + } + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "EVENT_DATE") + public Date getDate() { + return date; + } + + public void setDate(Date date) { + this.date = date; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } +} \ No newline at end of file diff --git a/src/it/tutorials-5.0.12/annotations/src/test/resources/hibernate.cfg.xml b/src/it/tutorials-5.0.12/annotations/src/test/resources/hibernate.cfg.xml new file mode 100644 index 00000000..a9590c18 --- /dev/null +++ b/src/it/tutorials-5.0.12/annotations/src/test/resources/hibernate.cfg.xml @@ -0,0 +1,42 @@ +<?xml version='1.0' encoding='utf-8'?> +<!-- + ~ Hibernate, Relational Persistence for Idiomatic Java + ~ + ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later. + ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. + --> +<!DOCTYPE hibernate-configuration PUBLIC + "-//Hibernate/Hibernate Configuration DTD 3.0//EN" + "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> + +<hibernate-configuration> + + <session-factory> + + <!-- Database connection settings --> + <property name="connection.driver_class">org.h2.Driver</property> + <property name="connection.url">jdbc:h2:mem:db1;DB_CLOSE_DELAY=-1;MVCC=TRUE</property> + <property name="connection.username">sa</property> + <property name="connection.password"></property> + + <!-- JDBC connection pool (use the built-in) --> + <property name="connection.pool_size">1</property> + + <!-- SQL dialect --> + <property name="dialect">org.hibernate.dialect.H2Dialect</property> + + <!-- Disable the second-level cache --> + <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property> + + <!-- Echo all executed SQL to stdout --> + <property name="show_sql">true</property> + + <!-- Drop and re-create the database schema on startup --> + <property name="hbm2ddl.auto">create</property> + + <!-- Names the annotated entity class --> + <mapping class="org.hibernate.tutorial.annotations.Event"/> + + </session-factory> + +</hibernate-configuration> \ No newline at end of file diff --git a/src/it/tutorials-5.0.12/basic/pom.xml b/src/it/tutorials-5.0.12/basic/pom.xml new file mode 100644 index 00000000..49936a74 --- /dev/null +++ b/src/it/tutorials-5.0.12/basic/pom.xml @@ -0,0 +1,28 @@ +<?xml version="1.0"?> +<!-- + ~ Hibernate, Relational Persistence for Idiomatic Java + ~ + ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later. + ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. + --> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.hibernate.tutorials</groupId> + <artifactId>hibernate-tutorials</artifactId> + <version>5.0.12.Final</version> + <relativePath>../pom.xml</relativePath> + </parent> + + <artifactId>hibernate-tutorial-hbm</artifactId> + <name>Hibernate hbm.xml Tutorial</name> + <description>Hibernate tutorial illustrating the use of native APIs and hbm.xml for mapping metadata</description> + + <properties> + <!-- Skip artifact deployment --> + <maven.deploy.skip>true</maven.deploy.skip> + </properties> + +</project> diff --git a/src/it/tutorials-5.0.12/basic/src/test/java/org/hibernate/tutorial/hbm/Event.hbm.xml b/src/it/tutorials-5.0.12/basic/src/test/java/org/hibernate/tutorial/hbm/Event.hbm.xml new file mode 100644 index 00000000..f786e79e --- /dev/null +++ b/src/it/tutorials-5.0.12/basic/src/test/java/org/hibernate/tutorial/hbm/Event.hbm.xml @@ -0,0 +1,23 @@ +<?xml version="1.0"?> + +<!-- + ~ Hibernate, Relational Persistence for Idiomatic Java + ~ + ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later. + ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. + --> +<!DOCTYPE hibernate-mapping PUBLIC + "-//Hibernate/Hibernate Mapping DTD 3.0//EN" + "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> + +<hibernate-mapping package="org.hibernate.tutorial.hbm"> + + <class name="Event" table="EVENTS"> + <id name="id" column="EVENT_ID"> + <generator class="increment"/> + </id> + <property name="date" type="timestamp" column="EVENT_DATE"/> + <property name="title"/> + </class> + +</hibernate-mapping> diff --git a/src/it/tutorials-5.0.12/basic/src/test/java/org/hibernate/tutorial/hbm/Event.java b/src/it/tutorials-5.0.12/basic/src/test/java/org/hibernate/tutorial/hbm/Event.java new file mode 100644 index 00000000..ae4c2dfd --- /dev/null +++ b/src/it/tutorials-5.0.12/basic/src/test/java/org/hibernate/tutorial/hbm/Event.java @@ -0,0 +1,67 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * Copyright (c) 2010, Red Hat Inc. or third-party contributors as + * indicated by the @author tags or express copyright attribution + * statements applied by the authors. All third-party contributions are + * distributed under license by Red Hat Inc. + * + * This copyrighted material is made available to anyone wishing to use, modify, + * copy, or redistribute it subject to the terms and conditions of the GNU + * Lesser General Public License, as published by the Free Software Foundation. + * + * This program 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 GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this distribution; if not, write to: + * Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor + * Boston, MA 02110-1301 USA + */ +package org.hibernate.tutorial.hbm; + +import java.util.Date; + +public class Event { + private Long id; + + private String title; + private Date date; + + public Event() { + // this form used by Hibernate + } + + public Event(String title, Date date) { + // for application use, to create new events + this.title = title; + this.date = date; + } + + public Long getId() { + return id; + } + + private void setId(Long id) { + this.id = id; + } + + public Date getDate() { + return date; + } + + public void setDate(Date date) { + this.date = date; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } +} \ No newline at end of file diff --git a/src/it/tutorials-5.0.12/basic/src/test/java/org/hibernate/tutorial/hbm/NativeApiIllustrationTest.java b/src/it/tutorials-5.0.12/basic/src/test/java/org/hibernate/tutorial/hbm/NativeApiIllustrationTest.java new file mode 100644 index 00000000..a1e327e1 --- /dev/null +++ b/src/it/tutorials-5.0.12/basic/src/test/java/org/hibernate/tutorial/hbm/NativeApiIllustrationTest.java @@ -0,0 +1,88 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * Copyright (c) 2010, Red Hat Inc. or third-party contributors as + * indicated by the @author tags or express copyright attribution + * statements applied by the authors. All third-party contributions are + * distributed under license by Red Hat Inc. + * + * This copyrighted material is made available to anyone wishing to use, modify, + * copy, or redistribute it subject to the terms and conditions of the GNU + * Lesser General Public License, as published by the Free Software Foundation. + * + * This program 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 GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this distribution; if not, write to: + * Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor + * Boston, MA 02110-1301 USA + */ +package org.hibernate.tutorial.hbm; + +import java.util.Date; +import java.util.List; + +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.boot.MetadataSources; +import org.hibernate.boot.registry.StandardServiceRegistry; +import org.hibernate.boot.registry.StandardServiceRegistryBuilder; + +import junit.framework.TestCase; + +/** + * Illustrates use of Hibernate native APIs. + * + * @author Steve Ebersole + */ +public class NativeApiIllustrationTest extends TestCase { + private SessionFactory sessionFactory; + + @Override + protected void setUp() throws Exception { + // A SessionFactory is set up once for an application! + final StandardServiceRegistry registry = new StandardServiceRegistryBuilder() + .configure() // configures settings from hibernate.cfg.xml + .build(); + try { + sessionFactory = new MetadataSources( registry ).buildMetadata().buildSessionFactory(); + } + catch (Exception e) { + // The registry would be destroyed by the SessionFactory, but we had trouble building the SessionFactory + // so destroy it manually. + StandardServiceRegistryBuilder.destroy( registry ); + } + } + + @Override + protected void tearDown() throws Exception { + if ( sessionFactory != null ) { + sessionFactory.close(); + } + } + + @SuppressWarnings("unchecked") + public void testBasicUsage() { + // create a couple of events... + Session session = sessionFactory.openSession(); + session.beginTransaction(); + session.save( new Event( "Our very first event!", new Date() ) ); + session.save( new Event( "A follow up event", new Date() ) ); + session.getTransaction().commit(); + session.close(); + + // now lets pull events from the database and list them + session = sessionFactory.openSession(); + session.beginTransaction(); + List result = session.createQuery( "from Event" ).list(); + for ( Event event : (List<Event>) result ) { + System.out.println( "Event (" + event.getDate() + ") : " + event.getTitle() ); + } + session.getTransaction().commit(); + session.close(); + } +} diff --git a/src/it/tutorials-5.0.12/basic/src/test/resources/hibernate.cfg.xml b/src/it/tutorials-5.0.12/basic/src/test/resources/hibernate.cfg.xml new file mode 100644 index 00000000..03d39373 --- /dev/null +++ b/src/it/tutorials-5.0.12/basic/src/test/resources/hibernate.cfg.xml @@ -0,0 +1,41 @@ +<?xml version='1.0' encoding='utf-8'?> +<!-- + ~ Hibernate, Relational Persistence for Idiomatic Java + ~ + ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later. + ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. + --> +<!DOCTYPE hibernate-configuration PUBLIC + "-//Hibernate/Hibernate Configuration DTD 3.0//EN" + "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> + +<hibernate-configuration> + + <session-factory> + + <!-- Database connection settings --> + <property name="connection.driver_class">org.h2.Driver</property> + <property name="connection.url">jdbc:h2:mem:db1;DB_CLOSE_DELAY=-1;MVCC=TRUE</property> + <property name="connection.username">sa</property> + <property name="connection.password"/> + + <!-- JDBC connection pool (use the built-in) --> + <property name="connection.pool_size">1</property> + + <!-- SQL dialect --> + <property name="dialect">org.hibernate.dialect.H2Dialect</property> + + <!-- Disable the second-level cache --> + <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property> + + <!-- Echo all executed SQL to stdout --> + <property name="show_sql">true</property> + + <!-- Drop and re-create the database schema on startup --> + <property name="hbm2ddl.auto">create</property> + + <mapping resource="org/hibernate/tutorial/hbm/Event.hbm.xml"/> + + </session-factory> + +</hibernate-configuration> \ No newline at end of file diff --git a/src/it/tutorials-5.0.12/entitymanager/pom.xml b/src/it/tutorials-5.0.12/entitymanager/pom.xml new file mode 100644 index 00000000..2b586d59 --- /dev/null +++ b/src/it/tutorials-5.0.12/entitymanager/pom.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Hibernate, Relational Persistence for Idiomatic Java + ~ + ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later. + ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. + --> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.hibernate.tutorials</groupId> + <artifactId>hibernate-tutorials</artifactId> + <version>5.0.12.Final</version> + <relativePath>../pom.xml</relativePath> + </parent> + + <artifactId>hibernate-tutorial-entitymanager</artifactId> + <name>Hibernate JPA Tutorial</name> + <description>Hibernate tutorial illustrating the use of JPA APIs and annotations for mapping metadata</description> + + <properties> + <!-- Skip artifact deployment --> + <maven.deploy.skip>true</maven.deploy.skip> + </properties> + + <dependencies> + <dependency> + <groupId>org.hibernate</groupId> + <artifactId>hibernate-entitymanager</artifactId> + <version>5.0.12.Final</version> + </dependency> + </dependencies> + +</project> diff --git a/src/it/tutorials-5.0.12/entitymanager/src/test/java/org/hibernate/tutorial/em/EntityManagerIllustrationTest.java b/src/it/tutorials-5.0.12/entitymanager/src/test/java/org/hibernate/tutorial/em/EntityManagerIllustrationTest.java new file mode 100644 index 00000000..feebd89a --- /dev/null +++ b/src/it/tutorials-5.0.12/entitymanager/src/test/java/org/hibernate/tutorial/em/EntityManagerIllustrationTest.java @@ -0,0 +1,73 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * Copyright (c) 2010, Red Hat Inc. or third-party contributors as + * indicated by the @author tags or express copyright attribution + * statements applied by the authors. All third-party contributions are + * distributed under license by Red Hat Inc. + * + * This copyrighted material is made available to anyone wishing to use, modify, + * copy, or redistribute it subject to the terms and conditions of the GNU + * Lesser General Public License, as published by the Free Software Foundation. + * + * This program 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 GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this distribution; if not, write to: + * Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor + * Boston, MA 02110-1301 USA + */ +package org.hibernate.tutorial.em; + +import java.util.Date; +import java.util.List; +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; +import javax.persistence.Persistence; + +import junit.framework.TestCase; + +/** + * Illustrates basic use of Hibernate as a JPA provider. + * + * @author Steve Ebersole + */ +public class EntityManagerIllustrationTest extends TestCase { + private EntityManagerFactory entityManagerFactory; + + @Override + protected void setUp() throws Exception { + // like discussed with regards to SessionFactory, an EntityManagerFactory is set up once for an application + // IMPORTANT: notice how the name here matches the name we gave the persistence-unit in persistence.xml! + entityManagerFactory = Persistence.createEntityManagerFactory( "org.hibernate.tutorial.jpa" ); + } + + @Override + protected void tearDown() throws Exception { + entityManagerFactory.close(); + } + + public void testBasicUsage() { + // create a couple of events... + EntityManager entityManager = entityManagerFactory.createEntityManager(); + entityManager.getTransaction().begin(); + entityManager.persist( new Event( "Our very first event!", new Date() ) ); + entityManager.persist( new Event( "A follow up event", new Date() ) ); + entityManager.getTransaction().commit(); + entityManager.close(); + + // now lets pull events from the database and list them + entityManager = entityManagerFactory.createEntityManager(); + entityManager.getTransaction().begin(); + List<Event> result = entityManager.createQuery( "from Event", Event.class ).getResultList(); + for ( Event event : result ) { + System.out.println( "Event (" + event.getDate() + ") : " + event.getTitle() ); + } + entityManager.getTransaction().commit(); + entityManager.close(); + } +} diff --git a/src/it/tutorials-5.0.12/entitymanager/src/test/java/org/hibernate/tutorial/em/Event.java b/src/it/tutorials-5.0.12/entitymanager/src/test/java/org/hibernate/tutorial/em/Event.java new file mode 100644 index 00000000..90fe4144 --- /dev/null +++ b/src/it/tutorials-5.0.12/entitymanager/src/test/java/org/hibernate/tutorial/em/Event.java @@ -0,0 +1,83 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * Copyright (c) 2010, Red Hat Inc. or third-party contributors as + * indicated by the @author tags or express copyright attribution + * statements applied by the authors. All third-party contributions are + * distributed under license by Red Hat Inc. + * + * This copyrighted material is made available to anyone wishing to use, modify, + * copy, or redistribute it subject to the terms and conditions of the GNU + * Lesser General Public License, as published by the Free Software Foundation. + * + * This program 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 GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this distribution; if not, write to: + * Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor + * Boston, MA 02110-1301 USA + */ +package org.hibernate.tutorial.em; + +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +import org.hibernate.annotations.GenericGenerator; + +@Entity +@Table( name = "EVENTS" ) +public class Event { + private Long id; + + private String title; + private Date date; + + public Event() { + // this form used by Hibernate + } + + public Event(String title, Date date) { + // for application use, to create new events + this.title = title; + this.date = date; + } + + @Id + @GeneratedValue(generator="increment") + @GenericGenerator(name="increment", strategy = "increment") + public Long getId() { + return id; + } + + private void setId(Long id) { + this.id = id; + } + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "EVENT_DATE") + public Date getDate() { + return date; + } + + public void setDate(Date date) { + this.date = date; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } +} \ No newline at end of file diff --git a/src/it/tutorials-5.0.12/entitymanager/src/test/resources/META-INF/persistence.xml b/src/it/tutorials-5.0.12/entitymanager/src/test/resources/META-INF/persistence.xml new file mode 100644 index 00000000..0fc95238 --- /dev/null +++ b/src/it/tutorials-5.0.12/entitymanager/src/test/resources/META-INF/persistence.xml @@ -0,0 +1,31 @@ +<!-- + ~ Hibernate, Relational Persistence for Idiomatic Java + ~ + ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later. + ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. + --> +<persistence xmlns="http://java.sun.com/xml/ns/persistence" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" + version="2.0"> + + <persistence-unit name="org.hibernate.tutorial.jpa"> + <description> + Persistence unit for the JPA tutorial of the Hibernate Getting Started Guide + </description> + + <class>org.hibernate.tutorial.em.Event</class> + + <properties> + <property name="javax.persistence.jdbc.driver" value="org.h2.Driver" /> + <property name="javax.persistence.jdbc.url" value="jdbc:h2:mem:db1;DB_CLOSE_DELAY=-1;MVCC=TRUE" /> + <property name="javax.persistence.jdbc.user" value="sa" /> + <property name="javax.persistence.jdbc.password" value="" /> + + <property name="hibernate.show_sql" value="true" /> + <property name="hibernate.hbm2ddl.auto" value="create" /> + </properties> + + </persistence-unit> + +</persistence> diff --git a/src/it/tutorials-5.0.12/envers/pom.xml b/src/it/tutorials-5.0.12/envers/pom.xml new file mode 100644 index 00000000..67542048 --- /dev/null +++ b/src/it/tutorials-5.0.12/envers/pom.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Hibernate, Relational Persistence for Idiomatic Java + ~ + ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later. + ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. + --> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.hibernate.tutorials</groupId> + <artifactId>hibernate-tutorials</artifactId> + <version>5.0.12.Final</version> + <relativePath>../pom.xml</relativePath> + </parent> + + <artifactId>hibernate-tutorial-envers</artifactId> + <name>Hibernate Envers Tutorial</name> + <description>Hibernate tutorial illustrating basic set up and use of Envers</description> + + <properties> + <!-- Skip artifact deployment --> + <maven.deploy.skip>true</maven.deploy.skip> + </properties> + + <dependencies> + <dependency> + <groupId>org.hibernate</groupId> + <artifactId>hibernate-envers</artifactId> + <version>5.0.12.Final</version> + </dependency> + <dependency> + <groupId>org.hibernate</groupId> + <artifactId>hibernate-entitymanager</artifactId> + <version>5.0.12.Final</version> + </dependency> + </dependencies> + +</project> diff --git a/src/it/tutorials-5.0.12/envers/src/test/java/org/hibernate/tutorial/envers/EnversIllustrationTest.java b/src/it/tutorials-5.0.12/envers/src/test/java/org/hibernate/tutorial/envers/EnversIllustrationTest.java new file mode 100644 index 00000000..5e29faa6 --- /dev/null +++ b/src/it/tutorials-5.0.12/envers/src/test/java/org/hibernate/tutorial/envers/EnversIllustrationTest.java @@ -0,0 +1,105 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * Copyright (c) 2010, Red Hat Inc. or third-party contributors as + * indicated by the @author tags or express copyright attribution + * statements applied by the authors. All third-party contributions are + * distributed under license by Red Hat Inc. + * + * This copyrighted material is made available to anyone wishing to use, modify, + * copy, or redistribute it subject to the terms and conditions of the GNU + * Lesser General Public License, as published by the Free Software Foundation. + * + * This program 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 GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this distribution; if not, write to: + * Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor + * Boston, MA 02110-1301 USA + */ +package org.hibernate.tutorial.envers; + +import java.util.Date; +import java.util.List; +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; +import javax.persistence.Persistence; + +import junit.framework.TestCase; + +import org.hibernate.envers.AuditReader; +import org.hibernate.envers.AuditReaderFactory; + +/** + * Illustrates the set up and use of Envers. + * <p> + * This example is different from the others in that we really need to save multiple revisions to the entity in + * order to get a good look at Envers in action. + * + * @author Steve Ebersole + */ +public class EnversIllustrationTest extends TestCase { + private EntityManagerFactory entityManagerFactory; + + @Override + protected void setUp() throws Exception { + // like discussed with regards to SessionFactory, an EntityManagerFactory is set up once for an application + // IMPORTANT: notice how the name here matches the name we gave the persistence-unit in persistence.xml! + entityManagerFactory = Persistence.createEntityManagerFactory( "org.hibernate.tutorial.envers" ); + } + + @Override + protected void tearDown() throws Exception { + entityManagerFactory.close(); + } + + public void testBasicUsage() { + // create a couple of events + EntityManager entityManager = entityManagerFactory.createEntityManager(); + entityManager.getTransaction().begin(); + entityManager.persist( new Event( "Our very first event!", new Date() ) ); + entityManager.persist( new Event( "A follow up event", new Date() ) ); + entityManager.getTransaction().commit(); + entityManager.close(); + + // now lets pull events from the database and list them + entityManager = entityManagerFactory.createEntityManager(); + entityManager.getTransaction().begin(); + List<Event> result = entityManager.createQuery( "from Event", Event.class ).getResultList(); + for ( Event event : result ) { + System.out.println( "Event (" + event.getDate() + ") : " + event.getTitle() ); + } + entityManager.getTransaction().commit(); + entityManager.close(); + + // so far the code is the same as we have seen in previous tutorials. Now lets leverage Envers... + + // first lets create some revisions + entityManager = entityManagerFactory.createEntityManager(); + entityManager.getTransaction().begin(); + Event myEvent = entityManager.find( Event.class, 2L ); // we are using the increment generator, so we know 2 is a valid id + myEvent.setDate( new Date() ); + myEvent.setTitle( myEvent.getTitle() + " (rescheduled)" ); + entityManager.getTransaction().commit(); + entityManager.close(); + + // and then use an AuditReader to look back through history + entityManager = entityManagerFactory.createEntityManager(); + entityManager.getTransaction().begin(); + myEvent = entityManager.find( Event.class, 2L ); + assertEquals( "A follow up event (rescheduled)", myEvent.getTitle() ); + AuditReader reader = AuditReaderFactory.get( entityManager ); + Event firstRevision = reader.find( Event.class, 2L, 1 ); + assertFalse( firstRevision.getTitle().equals( myEvent.getTitle() ) ); + assertFalse( firstRevision.getDate().equals( myEvent.getDate() ) ); + Event secondRevision = reader.find( Event.class, 2L, 2 ); + assertTrue( secondRevision.getTitle().equals( myEvent.getTitle() ) ); + assertTrue( secondRevision.getDate().equals( myEvent.getDate() ) ); + entityManager.getTransaction().commit(); + entityManager.close(); + } +} diff --git a/src/it/tutorials-5.0.12/envers/src/test/java/org/hibernate/tutorial/envers/Event.java b/src/it/tutorials-5.0.12/envers/src/test/java/org/hibernate/tutorial/envers/Event.java new file mode 100644 index 00000000..64741a61 --- /dev/null +++ b/src/it/tutorials-5.0.12/envers/src/test/java/org/hibernate/tutorial/envers/Event.java @@ -0,0 +1,92 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * Copyright (c) 2010, Red Hat Inc. or third-party contributors as + * indicated by the @author tags or express copyright attribution + * statements applied by the authors. All third-party contributions are + * distributed under license by Red Hat Inc. + * + * This copyrighted material is made available to anyone wishing to use, modify, + * copy, or redistribute it subject to the terms and conditions of the GNU + * Lesser General Public License, as published by the Free Software Foundation. + * + * This program 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 GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this distribution; if not, write to: + * Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor + * Boston, MA 02110-1301 USA + */ +package org.hibernate.tutorial.envers; + +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +import org.hibernate.annotations.GenericGenerator; +import org.hibernate.envers.Audited; + +@Entity +@Table( name = "EVENTS" ) +@Audited // <--- this tell Envers to audit (track changes to) this entity +public class Event { + private Long id; + + private String title; + private Date date; + + public Event() { + // this form used by Hibernate + } + + public Event(String title, Date date) { + // for application use, to create new events + this.title = title; + this.date = date; + } + + @Id + @GeneratedValue(generator="increment") + @GenericGenerator(name="increment", strategy = "increment") + public Long getId() { + return id; + } + + private void setId(Long id) { + this.id = id; + } + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "EVENT_DATE") + public Date getDate() { + return date; + } + + public void setDate(Date date) { + this.date = date; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + @Override + public int hashCode() { + int result = title.hashCode(); + result = 31 * result + date.hashCode(); + return result; + } +} \ No newline at end of file diff --git a/src/it/tutorials-5.0.12/envers/src/test/resources/META-INF/persistence.xml b/src/it/tutorials-5.0.12/envers/src/test/resources/META-INF/persistence.xml new file mode 100644 index 00000000..45a7dafe --- /dev/null +++ b/src/it/tutorials-5.0.12/envers/src/test/resources/META-INF/persistence.xml @@ -0,0 +1,31 @@ +<!-- + ~ Hibernate, Relational Persistence for Idiomatic Java + ~ + ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later. + ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. + --> +<persistence xmlns="http://java.sun.com/xml/ns/persistence" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" + version="2.0"> + + <persistence-unit name="org.hibernate.tutorial.envers"> + <description> + Persistence unit for the Envers tutorial of the Hibernate Getting Started Guide + </description> + + <class>org.hibernate.tutorial.envers.Event</class> + + <properties> + <property name="javax.persistence.jdbc.driver" value="org.h2.Driver" /> + <property name="javax.persistence.jdbc.url" value="jdbc:h2:mem:db1;DB_CLOSE_DELAY=-1;MVCC=TRUE" /> + <property name="javax.persistence.jdbc.user" value="sa" /> + <property name="javax.persistence.jdbc.password" value="" /> + + <property name="hibernate.show_sql" value="true" /> + <property name="hibernate.hbm2ddl.auto" value="create" /> + </properties> + + </persistence-unit> + +</persistence> diff --git a/src/it/tutorials-5.0.12/osgi/datasource-h2.xml b/src/it/tutorials-5.0.12/osgi/datasource-h2.xml new file mode 100644 index 00000000..3bf738fd --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/datasource-h2.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Hibernate, Relational Persistence for Idiomatic Java + ~ + ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later. + ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. + --> + +<!-- +First install the H2 driver using: +> install -s mvn:com.h2database/h2/1.3.163 + +Then copy this file to the deploy folder +--> +<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"> + + <bean id="dataSource" class="org.h2.jdbcx.JdbcDataSource"> + <property name="URL" value="jdbc:h2:mem:db1;DB_CLOSE_DELAY=-1;MVCC=TRUE"/> + <property name="user" value="sa"/> + <property name="password" value=""/> + </bean> + + <service interface="javax.sql.DataSource" ref="dataSource"> + <service-properties> + <entry key="osgi.jndi.service.name" value="jdbc/h2ds"/> + </service-properties> + </service> +</blueprint> diff --git a/src/it/tutorials-5.0.12/osgi/managed-jpa/features.xml b/src/it/tutorials-5.0.12/osgi/managed-jpa/features.xml new file mode 100644 index 00000000..9e3dbf68 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/managed-jpa/features.xml @@ -0,0 +1,81 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Hibernate, Relational Persistence for Idiomatic Java + ~ + ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later. + ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. + --> +<features> + <feature name="hibernate-test"> + + <!-- JTA --> + <config name="org.apache.aries.transaction"> + aries.transaction.recoverable = true + aries.transaction.timeout = 600 + aries.transaction.howl.logFileDir = /tmp/karaf/txlog + aries.transaction.howl.maxLogFiles = 2 + aries.transaction.howl.maxBlocksPerFile = 512 + aries.transaction.howl.bufferSizeKBytes = 4 + </config> + <bundle dependency="true" start-level="30">mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1</bundle> + <bundle start-level="30">mvn:org.apache.aries.transaction/org.apache.aries.transaction.blueprint/1.0.0</bundle> + <bundle start-level="30">mvn:org.apache.aries.transaction/org.apache.aries.transaction.manager/1.0.1</bundle> + + <!-- JPA --> + <bundle start-level="30">mvn:org.hibernate.javax.persistence/hibernate-jpa-2.1-api/1.0.0.Final</bundle> + <!-- No container currently supports JPA 2.1. Clone and build Aries from the following fork (upgrades to + JPA 2.1). Aries should be upgrading as soon as the spec is out. + https://github.com/brmeyer/aries/tree/jpa21 --> + <bundle start-level="30">mvn:org.apache.aries/org.apache.aries.util/1.1.1-SNAPSHOT</bundle> + <bundle start-level="30">mvn:org.apache.aries.jpa/org.apache.aries.jpa.api/1.0.1-SNAPSHOT</bundle> + <bundle start-level="30">mvn:org.apache.aries.jpa/org.apache.aries.jpa.blueprint.aries/1.0.2-SNAPSHOT</bundle> + <bundle start-level="30">mvn:org.apache.aries.jpa/org.apache.aries.jpa.container/1.0.1-SNAPSHOT</bundle> + <bundle start-level="30">mvn:org.apache.aries.jpa/org.apache.aries.jpa.container.context/1.0.2-SNAPSHOT</bundle> + + <!-- JNDI --> + <bundle start-level="30">mvn:org.apache.aries/org.apache.aries.util/1.0.0</bundle> + <bundle start-level="30">mvn:org.apache.aries.jndi/org.apache.aries.jndi.api/1.0.0</bundle> + <bundle start-level="30">mvn:org.apache.aries.jndi/org.apache.aries.jndi.core/1.0.0</bundle> + <bundle start-level="30">mvn:org.apache.aries.jndi/org.apache.aries.jndi.rmi/1.0.0</bundle> + <bundle start-level="30">mvn:org.apache.aries.jndi/org.apache.aries.jndi.url/1.0.0</bundle> + <bundle start-level="30">mvn:org.apache.aries.jndi/org.apache.aries.jndi.legacy.support/1.0.0</bundle> + + <!-- Taken from Karaf-Tutorial --> + <bundle>mvn:commons-collections/commons-collections/3.2.1</bundle> + <bundle>mvn:commons-pool/commons-pool/1.5.4</bundle> + <bundle>mvn:commons-dbcp/commons-dbcp/1.4</bundle> + <bundle>mvn:commons-lang/commons-lang/2.6</bundle> + <bundle>wrap:mvn:net.sourceforge.serp/serp/1.13.1</bundle> + + <bundle>mvn:com.h2database/h2/1.3.170</bundle> + <bundle>blueprint:file:/[PATH]/datasource-h2.xml</bundle> + + <!-- These do not natively support OSGi, so using 3rd party bundles. --> + <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.antlr/2.7.7_5</bundle> + <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.dom4j/1.6.1_5</bundle> + + <!-- These do not natively support OSGi, so wrap with BND. --> + <bundle>wrap:mvn:org.jboss/jandex/1.1.0.Final</bundle> + + <bundle>mvn:com.fasterxml/classmate/0.8.0</bundle> + <bundle>mvn:org.apache.logging.log4j/log4j-api/2.0</bundle> + <bundle>mvn:log4j/log4j/1.2.17</bundle> + <bundle>mvn:org.jboss.logging/jboss-logging/3.2.1.Final</bundle> + <bundle>mvn:org.javassist/javassist/3.18.1-GA</bundle> + + <bundle>mvn:org.hibernate.common/hibernate-commons-annotations/4.0.5.Final</bundle> + + <bundle>mvn:org.hibernate/hibernate-core/5.0.12.Final</bundle> + <bundle>mvn:org.hibernate/hibernate-entitymanager/5.0.12.Final</bundle> + + <!-- TODO: It seems that the persistence unit bundle needs to be started + before hibernate-osgi. When the BundleActivator is started, + the persistence unit is provided even though managed-jpa + hasn't completely started yet. If that happens, you'll get an "illegal + bundle state" exception. Is there a way for the activator to + watch for bundles with PUs before registering the persistence provider? --> + <bundle>mvn:org.hibernate.osgi/managed-jpa/1.0.0</bundle> + + <bundle>mvn:org.hibernate/hibernate-osgi/5.0.12.Final</bundle> + </feature> +</features> diff --git a/src/it/tutorials-5.0.12/osgi/managed-jpa/pom.xml b/src/it/tutorials-5.0.12/osgi/managed-jpa/pom.xml new file mode 100644 index 00000000..55ccacd3 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/managed-jpa/pom.xml @@ -0,0 +1,70 @@ +<!-- + ~ Hibernate, Relational Persistence for Idiomatic Java + ~ + ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later. + ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. + --> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>org.hibernate.osgi</groupId> + <artifactId>managed-jpa</artifactId> + <version>1.0.0</version> + <packaging>bundle</packaging> + + <dependencies> + <dependency> + <groupId>org.hibernate.javax.persistence</groupId> + <artifactId>hibernate-jpa-2.1-api</artifactId> + <version>1.0.0.Final</version> + </dependency> + <dependency> + <groupId>org.osgi</groupId> + <artifactId>org.osgi.core</artifactId> + <version>4.3.1</version> + </dependency> + <dependency> + <groupId>org.osgi</groupId> + <artifactId>org.osgi.enterprise</artifactId> + <version>4.2.0</version> + </dependency> + <dependency> + <groupId>org.apache.karaf.shell</groupId> + <artifactId>org.apache.karaf.shell.console</artifactId> + <version>2.3.0</version> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Bundle-SymbolicName>org.hibernate.osgi.managed-jpa</Bundle-SymbolicName> + <Bundle-Name>managed-jpa</Bundle-Name> + <Bundle-Version>1.0.0</Bundle-Version> + <Export-Package> + org.hibernate.osgitest, + org.hibernate.osgitest.entity + </Export-Package> + <Import-Package> + org.apache.felix.service.command, + org.apache.felix.gogo.commands, + org.apache.karaf.shell.console, + org.apache.karaf.shell.commands, + javax.persistence;version="[1.0.0,2.1.0]", + <!-- Needed for proxying's Javassist enhancement during runtime --> + org.hibernate.proxy, + javassist.util.proxy, + * + </Import-Package> + <Meta-Persistence>META-INF/persistence.xml</Meta-Persistence> + </instructions> + </configuration> + </plugin> + </plugins> + </build> +</project> diff --git a/src/it/tutorials-5.0.12/osgi/managed-jpa/src/main/java/org/hibernate/osgitest/DataPointService.java b/src/it/tutorials-5.0.12/osgi/managed-jpa/src/main/java/org/hibernate/osgitest/DataPointService.java new file mode 100644 index 00000000..bdeaace1 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/managed-jpa/src/main/java/org/hibernate/osgitest/DataPointService.java @@ -0,0 +1,37 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * JBoss, Home of Professional Open Source + * Copyright 2013 Red Hat Inc. and/or its affiliates and other contributors + * as indicated by the @authors tag. All rights reserved. + * See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the GNU Lesser General Public License, v. 2.1. + * This program is distributed in the hope that it will be useful, but WITHOUT A + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * You should have received a copy of the GNU Lesser General Public License, + * v.2.1 along with this distribution; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ +package org.hibernate.osgitest; + +import java.util.List; + +import org.hibernate.osgitest.entity.DataPoint; + +/** + * @author Brett Meyer + */ +public interface DataPointService { + + public void add(DataPoint dp); + + public List<DataPoint> getAll(); + + public void deleteAll(); +} diff --git a/src/it/tutorials-5.0.12/osgi/managed-jpa/src/main/java/org/hibernate/osgitest/DataPointServiceImpl.java b/src/it/tutorials-5.0.12/osgi/managed-jpa/src/main/java/org/hibernate/osgitest/DataPointServiceImpl.java new file mode 100644 index 00000000..f3248896 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/managed-jpa/src/main/java/org/hibernate/osgitest/DataPointServiceImpl.java @@ -0,0 +1,58 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * JBoss, Home of Professional Open Source + * Copyright 2013 Red Hat Inc. and/or its affiliates and other contributors + * as indicated by the @authors tag. All rights reserved. + * See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the GNU Lesser General Public License, v. 2.1. + * This program is distributed in the hope that it will be useful, but WITHOUT A + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * You should have received a copy of the GNU Lesser General Public License, + * v.2.1 along with this distribution; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ +package org.hibernate.osgitest; + +import java.util.List; + +import javax.persistence.EntityManager; + +import org.hibernate.osgitest.entity.DataPoint; + +/** + * @author Brett Meyer + */ +public class DataPointServiceImpl implements DataPointService { + + private EntityManager entityManager; + + public void add(DataPoint dp) { + entityManager.persist( dp ); + entityManager.flush(); + } + + public List<DataPoint> getAll() { + return entityManager.createQuery( "select d from DataPoint d", DataPoint.class ).getResultList(); + } + + public void deleteAll() { + entityManager.createQuery( "delete from DataPoint" ).executeUpdate(); + entityManager.flush(); + } + + public EntityManager getEntityManager() { + return entityManager; + } + + public void setEntityManager(EntityManager entityManager) { + this.entityManager = entityManager; + } + +} diff --git a/src/it/tutorials-5.0.12/osgi/managed-jpa/src/main/java/org/hibernate/osgitest/command/AddCommand.java b/src/it/tutorials-5.0.12/osgi/managed-jpa/src/main/java/org/hibernate/osgitest/command/AddCommand.java new file mode 100644 index 00000000..9e9844c3 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/managed-jpa/src/main/java/org/hibernate/osgitest/command/AddCommand.java @@ -0,0 +1,44 @@ +/* + * 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 org.hibernate.osgitest.command; + +import org.apache.felix.gogo.commands.Action; +import org.apache.felix.gogo.commands.Argument; +import org.apache.felix.gogo.commands.Command; +import org.apache.felix.service.command.CommandSession; +import org.hibernate.osgitest.DataPointService; +import org.hibernate.osgitest.entity.DataPoint; + +@Command(scope = "dp", name = "add") +public class AddCommand implements Action { + @Argument(index=0, name="Name", required=true, description="Name", multiValued=false) + String name; + + private DataPointService dpService; + + public void setDpService(DataPointService dpService) { + this.dpService = dpService; + } + + public Object execute(CommandSession session) throws Exception { + DataPoint dp = new DataPoint(); + dp.setName( name ); + dpService.add( dp ); + return null; + } + +} diff --git a/src/it/tutorials-5.0.12/osgi/managed-jpa/src/main/java/org/hibernate/osgitest/command/DeleteAllCommand.java b/src/it/tutorials-5.0.12/osgi/managed-jpa/src/main/java/org/hibernate/osgitest/command/DeleteAllCommand.java new file mode 100644 index 00000000..d6c4ccf6 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/managed-jpa/src/main/java/org/hibernate/osgitest/command/DeleteAllCommand.java @@ -0,0 +1,37 @@ +/* + * 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 org.hibernate.osgitest.command; + +import org.apache.felix.gogo.commands.Action; +import org.apache.felix.gogo.commands.Command; +import org.apache.felix.service.command.CommandSession; +import org.hibernate.osgitest.DataPointService; + +@Command(scope = "dp", name = "deleteAll") +public class DeleteAllCommand implements Action { +private DataPointService dpService; + + public void setDpService(DataPointService dpService) { + this.dpService = dpService; + } + + public Object execute(CommandSession session) throws Exception { + dpService.deleteAll(); + return null; + } + +} diff --git a/src/it/tutorials-5.0.12/osgi/managed-jpa/src/main/java/org/hibernate/osgitest/command/GetAllCommand.java b/src/it/tutorials-5.0.12/osgi/managed-jpa/src/main/java/org/hibernate/osgitest/command/GetAllCommand.java new file mode 100644 index 00000000..ebdac60e --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/managed-jpa/src/main/java/org/hibernate/osgitest/command/GetAllCommand.java @@ -0,0 +1,43 @@ +/* + * 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 org.hibernate.osgitest.command; + +import java.util.List; + +import org.apache.felix.gogo.commands.Action; +import org.apache.felix.gogo.commands.Command; +import org.apache.felix.service.command.CommandSession; +import org.hibernate.osgitest.DataPointService; +import org.hibernate.osgitest.entity.DataPoint; + +@Command(scope = "dp", name = "getAll") +public class GetAllCommand implements Action { + private DataPointService dpService; + + public void setDpService(DataPointService dpService) { + this.dpService = dpService; + } + + public Object execute(CommandSession session) throws Exception { + List<DataPoint> dps = dpService.getAll(); + for (DataPoint dp : dps) { + System.out.println(dp.getId() + ", " + dp.getName()); + } + return null; + } + +} diff --git a/src/it/tutorials-5.0.12/osgi/managed-jpa/src/main/java/org/hibernate/osgitest/entity/DataPoint.java b/src/it/tutorials-5.0.12/osgi/managed-jpa/src/main/java/org/hibernate/osgitest/entity/DataPoint.java new file mode 100644 index 00000000..2a566d88 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/managed-jpa/src/main/java/org/hibernate/osgitest/entity/DataPoint.java @@ -0,0 +1,53 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * JBoss, Home of Professional Open Source + * Copyright 2013 Red Hat Inc. and/or its affiliates and other contributors + * as indicated by the @authors tag. All rights reserved. + * See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the GNU Lesser General Public License, v. 2.1. + * This program is distributed in the hope that it will be useful, but WITHOUT A + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * You should have received a copy of the GNU Lesser General Public License, + * v.2.1 along with this distribution; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ +package org.hibernate.osgitest.entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; + +/** + * @author Brett Meyer + */ +@Entity +public class DataPoint { + @Id + @GeneratedValue + private long id; + + private String name; + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/src/it/tutorials-5.0.12/osgi/managed-jpa/src/main/resources/META-INF/persistence.xml b/src/it/tutorials-5.0.12/osgi/managed-jpa/src/main/resources/META-INF/persistence.xml new file mode 100644 index 00000000..77555cb4 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/managed-jpa/src/main/resources/META-INF/persistence.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Hibernate, Relational Persistence for Idiomatic Java + ~ + ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later. + ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. + --> +<persistence xmlns="http://java.sun.com/xml/ns/persistence" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + version="1.0"> + <persistence-unit name="managed-jpa" transaction-type="JTA"> + <jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/h2ds)</jta-data-source> + + <properties> + <property name="hibernate.connection.driver_class" value="org.h2.Driver"/> + <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/> + <property name="hibernate.hbm2ddl.auto" value="create-drop"/> + <property name="hibernate.archive.autodetection" value="class"/> + </properties> + </persistence-unit> +</persistence> \ No newline at end of file diff --git a/src/it/tutorials-5.0.12/osgi/managed-jpa/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/src/it/tutorials-5.0.12/osgi/managed-jpa/src/main/resources/OSGI-INF/blueprint/blueprint.xml new file mode 100644 index 00000000..2436aa74 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/managed-jpa/src/main/resources/OSGI-INF/blueprint/blueprint.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Hibernate, Relational Persistence for Idiomatic Java + ~ + ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later. + ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. + --> +<blueprint default-activation="eager" + xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:jpa="http://aries.apache.org/xmlns/jpa/v1.0.0" + xmlns:tx="http://aries.apache.org/xmlns/transactions/v1.0.0"> + + <!-- This gets the container-managed EntityManager and injects it into the DataPointServiceImpl bean. --> + <bean id="dpService" class="org.hibernate.osgitest.DataPointServiceImpl"> + <jpa:context unitname="managed-jpa" property="entityManager"/> + <tx:transaction method="*" value="Required"/> + </bean> + <service ref="dpService" interface="org.hibernate.osgitest.DataPointService"/> + + <!-- This demonstrates how to register your custom implementations of Hibernate extension points, such as + Integrator and TypeContributor. --> + <!-- <bean id="integrator" class="your.package.IntegratorImpl"/> + <service ref="integrator" interface="org.hibernate.integrator.spi.Integrator"/> + <bean id="typeContributor" class="your.package.TypeContributorImpl"/> + <service ref="typeContributor" interface="org.hibernate.metamodel.spi.TypeContributor"/> --> + + <!-- This bundle makes use of Karaf commands to demonstrate core persistence operations. Feel free to remove it. --> + <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0"> + <command> + <action class="org.hibernate.osgitest.command.AddCommand"> + <property name="dpService" ref="dpService"/> + </action> + </command> + <command> + <action class="org.hibernate.osgitest.command.GetAllCommand"> + <property name="dpService" ref="dpService"/> + </action> + </command> + <command> + <action class="org.hibernate.osgitest.command.DeleteAllCommand"> + <property name="dpService" ref="dpService"/> + </action> + </command> + </command-bundle> +</blueprint> diff --git a/src/it/tutorials-5.0.12/osgi/pom.xml b/src/it/tutorials-5.0.12/osgi/pom.xml new file mode 100644 index 00000000..2daa68a4 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/pom.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Hibernate, Relational Persistence for Idiomatic Java + ~ + ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later. + ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. + --> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.hibernate.tutorials</groupId> + <artifactId>hibernate-tutorials</artifactId> + <version>5.0.12.Final</version> + <relativePath>../pom.xml</relativePath> + </parent> + + <artifactId>hibernate-tutorial-osgi</artifactId> + <name>Hibernate OSGI Tutorials</name> + <description>Hibernate tutoriasl illustrating basic set up and use of OSGI</description> + <packaging>pom</packaging> + + <properties> + <!-- Skip artifact deployment --> + <maven.deploy.skip>true</maven.deploy.skip> + </properties> + + <modules> + <module>managed-jpa</module> + <module>unmanaged-jpa</module> + <module>unmanaged-native</module> + </modules> + +</project> diff --git a/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/features.xml b/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/features.xml new file mode 100644 index 00000000..535956b8 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/features.xml @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Hibernate, Relational Persistence for Idiomatic Java + ~ + ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later. + ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. + --> +<features> + <feature name="hibernate-test"> + + <!-- JTA --> + <bundle start-level="30">mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1</bundle> + + <!-- JPA --> + <bundle start-level="30">mvn:org.hibernate.javax.persistence/hibernate-jpa-2.1-api/1.0.0.Final</bundle> + + <!-- Taken from Karaf-Tutorial --> + <bundle>mvn:commons-collections/commons-collections/3.2.1</bundle> + <bundle>mvn:commons-pool/commons-pool/1.5.4</bundle> + <bundle>mvn:commons-dbcp/commons-dbcp/1.4</bundle> + <bundle>mvn:commons-lang/commons-lang/2.6</bundle> + <bundle>wrap:mvn:net.sourceforge.serp/serp/1.13.1</bundle> + + <bundle>mvn:com.h2database/h2/1.3.170</bundle> + + <!-- These do not natively support OSGi, so using 3rd party bundles. --> + <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.antlr/2.7.7_5</bundle> + <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.dom4j/1.6.1_5</bundle> + + <!-- These do not natively support OSGi, so wrap with BND. --> + <bundle>wrap:mvn:org.jboss/jandex/1.1.0.Final</bundle> + + <bundle>mvn:com.fasterxml/classmate/0.8.0</bundle> + <bundle>mvn:org.apache.logging.log4j/log4j-api/2.0</bundle> + <bundle>mvn:log4j/log4j/1.2.17</bundle> + <bundle>mvn:org.jboss.logging/jboss-logging/3.2.1.Final</bundle> + <bundle>mvn:org.javassist/javassist/3.18.1-GA</bundle> + + <bundle>mvn:org.hibernate.common/hibernate-commons-annotations/4.0.5.Final</bundle> + + <bundle>mvn:org.hibernate/hibernate-core/5.0.12.Final</bundle> + <bundle>mvn:org.hibernate/hibernate-entitymanager/5.0.12.Final</bundle> + <bundle>mvn:org.hibernate/hibernate-osgi/5.0.12.Final</bundle> + + <bundle>mvn:org.hibernate.osgi/unmanaged-jpa/1.0.0</bundle> + </feature> +</features> diff --git a/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/pom.xml b/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/pom.xml new file mode 100644 index 00000000..05e394b5 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/pom.xml @@ -0,0 +1,81 @@ +<!-- + ~ Hibernate, Relational Persistence for Idiomatic Java + ~ + ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later. + ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. + --> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>org.hibernate.osgi</groupId> + <artifactId>unmanaged-jpa</artifactId> + <version>1.0.0</version> + <packaging>bundle</packaging> + + <dependencies> + <dependency> + <groupId>org.hibernate.javax.persistence</groupId> + <artifactId>hibernate-jpa-2.1-api</artifactId> + <version>1.0.0.Final</version> + </dependency> + <dependency> + <groupId>org.osgi</groupId> + <artifactId>org.osgi.core</artifactId> + <version>4.3.1</version> + </dependency> + <dependency> + <groupId>org.osgi</groupId> + <artifactId>org.osgi.enterprise</artifactId> + <version>4.2.0</version> + </dependency> + <dependency> + <groupId>org.apache.karaf.shell</groupId> + <artifactId>org.apache.karaf.shell.console</artifactId> + <version>2.3.0</version> + </dependency> + <dependency> + <groupId>org.hibernate</groupId> + <artifactId>hibernate-entitymanager</artifactId> + <version>5.0.12.Final</version> + </dependency> + <dependency> + <groupId>com.h2database</groupId> + <artifactId>h2</artifactId> + <version>1.3.170</version> + </dependency> + + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Bundle-SymbolicName>org.hibernate.osgi.unmanaged-jpa</Bundle-SymbolicName> + <Bundle-Name>unmanaged-jpa</Bundle-Name> + <Bundle-Version>1.0.0</Bundle-Version> + <Export-Package> + org.hibernate.osgitest, + org.hibernate.osgitest.entity + </Export-Package> + <Import-Package> + org.apache.felix.service.command, + org.apache.felix.gogo.commands, + org.apache.karaf.shell.console, + org.apache.karaf.shell.commands, + org.h2, + javax.persistence;version="[1.0.0,2.1.0]", + <!-- Needed for proxying's Javassist enhancement during runtime --> + org.hibernate.proxy, + javassist.util.proxy, + * + </Import-Package> + </instructions> + </configuration> + </plugin> + </plugins> + </build> +</project> diff --git a/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/DataPointService.java b/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/DataPointService.java new file mode 100644 index 00000000..de8c960c --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/DataPointService.java @@ -0,0 +1,41 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * JBoss, Home of Professional Open Source + * Copyright 2013 Red Hat Inc. and/or its affiliates and other contributors + * as indicated by the @authors tag. All rights reserved. + * See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the GNU Lesser General Public License, v. 2.1. + * This program is distributed in the hope that it will be useful, but WITHOUT A + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * You should have received a copy of the GNU Lesser General Public License, + * v.2.1 along with this distribution; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ +package org.hibernate.osgitest; + +import java.util.List; + +import org.hibernate.osgitest.entity.DataPoint; + +/** + * @author Brett Meyer + */ +public interface DataPointService { + + public void add(DataPoint dp); + + public void update(DataPoint dp); + + public DataPoint get(long id); + + public List<DataPoint> getAll(); + + public void deleteAll(); +} diff --git a/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/DataPointServiceImpl.java b/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/DataPointServiceImpl.java new file mode 100644 index 00000000..dba3609e --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/DataPointServiceImpl.java @@ -0,0 +1,78 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * JBoss, Home of Professional Open Source + * Copyright 2013 Red Hat Inc. and/or its affiliates and other contributors + * as indicated by the @authors tag. All rights reserved. + * See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the GNU Lesser General Public License, v. 2.1. + * This program is distributed in the hope that it will be useful, but WITHOUT A + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * You should have received a copy of the GNU Lesser General Public License, + * v.2.1 along with this distribution; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ +package org.hibernate.osgitest; + +import java.util.List; + +import javax.persistence.EntityManager; + +import org.hibernate.osgitest.entity.DataPoint; + +/** + * @author Brett Meyer + */ +public class DataPointServiceImpl implements DataPointService { + + private HibernateUtil hibernateUtil = new HibernateUtil(); + + public void add(DataPoint dp) { + EntityManager em = hibernateUtil.getEntityManager(); + em.getTransaction().begin(); + em.persist( dp ); + em.getTransaction().commit(); + em.close(); + } + + public void update(DataPoint dp) { + EntityManager em = hibernateUtil.getEntityManager(); + em.getTransaction().begin(); + em.merge( dp ); + em.getTransaction().commit(); + em.close(); + } + + public DataPoint get(long id) { + EntityManager em = hibernateUtil.getEntityManager(); + em.getTransaction().begin(); + DataPoint dp = (DataPoint) em.createQuery( "from DataPoint dp where dp.id=" + id ).getSingleResult(); + em.getTransaction().commit(); + em.close(); + return dp; + } + + public List<DataPoint> getAll() { + EntityManager em = hibernateUtil.getEntityManager(); + em.getTransaction().begin(); + List list = em.createQuery( "from DataPoint" ).getResultList(); + em.getTransaction().commit(); + em.close(); + return list; + } + + public void deleteAll() { + EntityManager em = hibernateUtil.getEntityManager(); + em.getTransaction().begin(); + em.createQuery( "delete from DataPoint" ).executeUpdate(); + em.getTransaction().commit(); + em.close(); + } + +} diff --git a/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/HibernateUtil.java b/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/HibernateUtil.java new file mode 100644 index 00000000..0927f15f --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/HibernateUtil.java @@ -0,0 +1,57 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * JBoss, Home of Professional Open Source + * Copyright 2013 Red Hat Inc. and/or its affiliates and other contributors + * as indicated by the @authors tag. All rights reserved. + * See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the GNU Lesser General Public License, v. 2.1. + * This program is distributed in the hope that it will be useful, but WITHOUT A + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * You should have received a copy of the GNU Lesser General Public License, + * v.2.1 along with this distribution; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ +package org.hibernate.osgitest; + +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; +import javax.persistence.spi.PersistenceProvider; + +import org.osgi.framework.Bundle; +import org.osgi.framework.BundleContext; +import org.osgi.framework.FrameworkUtil; +import org.osgi.framework.ServiceReference; + +/** + * @author Brett Meyer + */ + +public class HibernateUtil { + + private EntityManagerFactory emf; + + public EntityManager getEntityManager() { + return getEntityManagerFactory().createEntityManager(); + } + + private EntityManagerFactory getEntityManagerFactory() { + if ( emf == null ) { + Bundle thisBundle = FrameworkUtil.getBundle( HibernateUtil.class ); + // Could get this by wiring up OsgiTestBundleActivator as well. + BundleContext context = thisBundle.getBundleContext(); + + ServiceReference serviceReference = context.getServiceReference( PersistenceProvider.class.getName() ); + PersistenceProvider persistenceProvider = (PersistenceProvider) context.getService( serviceReference ); + + emf = persistenceProvider.createEntityManagerFactory( "unmanaged-jpa", null ); + } + return emf; + } +} diff --git a/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/TestIntegrator.java b/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/TestIntegrator.java new file mode 100644 index 00000000..f4436346 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/TestIntegrator.java @@ -0,0 +1,45 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * JBoss, Home of Professional Open Source + * Copyright 2013 Red Hat Inc. and/or its affiliates and other contributors + * as indicated by the @authors tag. All rights reserved. + * See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the GNU Lesser General Public License, v. 2.1. + * This program is distributed in the hope that it will be useful, but WITHOUT A + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * You should have received a copy of the GNU Lesser General Public License, + * v.2.1 along with this distribution; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ +package org.hibernate.osgitest; + +import org.hibernate.boot.Metadata; +import org.hibernate.engine.spi.SessionFactoryImplementor; +import org.hibernate.integrator.spi.Integrator; +import org.hibernate.service.spi.SessionFactoryServiceRegistry; + + +/** + * @author Brett Meyer + */ +public class TestIntegrator implements Integrator { + + public void integrate( + Metadata metadata, + SessionFactoryImplementor sessionFactory, + SessionFactoryServiceRegistry serviceRegistry) { + System.out.println("Integrator#integrate"); + } + + public void disintegrate(SessionFactoryImplementor sessionFactory, SessionFactoryServiceRegistry serviceRegistry) { + System.out.println("Integrator#disintegrate"); + } + +} diff --git a/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/TestStrategyRegistrationProvider.java b/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/TestStrategyRegistrationProvider.java new file mode 100644 index 00000000..f7ad26f5 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/TestStrategyRegistrationProvider.java @@ -0,0 +1,37 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * JBoss, Home of Professional Open Source + * Copyright 2013 Red Hat Inc. and/or its affiliates and other contributors + * as indicated by the @authors tag. All rights reserved. + * See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the GNU Lesser General Public License, v. 2.1. + * This program is distributed in the hope that it will be useful, but WITHOUT A + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * You should have received a copy of the GNU Lesser General Public License, + * v.2.1 along with this distribution; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ +package org.hibernate.osgitest; + +import java.util.Collections; + +import org.hibernate.boot.registry.selector.StrategyRegistration; +import org.hibernate.boot.registry.selector.StrategyRegistrationProvider; + +/** + * @author Brett Meyer + */ +public class TestStrategyRegistrationProvider implements StrategyRegistrationProvider { + + public Iterable<StrategyRegistration> getStrategyRegistrations() { + System.out.println("StrategyRegistrationProvider#getStrategyRegistrations"); + return Collections.EMPTY_LIST; + } +} diff --git a/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/TestTypeContributor.java b/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/TestTypeContributor.java new file mode 100644 index 00000000..0da11cb6 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/TestTypeContributor.java @@ -0,0 +1,37 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * JBoss, Home of Professional Open Source + * Copyright 2013 Red Hat Inc. and/or its affiliates and other contributors + * as indicated by the @authors tag. All rights reserved. + * See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the GNU Lesser General Public License, v. 2.1. + * This program is distributed in the hope that it will be useful, but WITHOUT A + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * You should have received a copy of the GNU Lesser General Public License, + * v.2.1 along with this distribution; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ +package org.hibernate.osgitest; + +import org.hibernate.boot.model.TypeContributions; +import org.hibernate.boot.model.TypeContributor; +import org.hibernate.service.ServiceRegistry; + + +/** + * @author Brett Meyer + */ +public class TestTypeContributor implements TypeContributor { + + public void contribute(TypeContributions typeContributions, ServiceRegistry serviceRegistry) { + System.out.println("TypeContributor#contribute"); + } + +} diff --git a/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/command/AddCommand.java b/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/command/AddCommand.java new file mode 100644 index 00000000..c1b906c0 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/command/AddCommand.java @@ -0,0 +1,44 @@ +/* + * 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 org.hibernate.osgitest.command; + +import org.apache.felix.gogo.commands.Action; +import org.apache.felix.gogo.commands.Argument; +import org.apache.felix.gogo.commands.Command; +import org.apache.felix.service.command.CommandSession; +import org.hibernate.osgitest.DataPointService; +import org.hibernate.osgitest.entity.DataPoint; + +@Command(scope = "dp", name = "addJPA") +public class AddCommand implements Action { + @Argument(index=0, name="Name", required=true, description="Name", multiValued=false) + String name; + + private DataPointService dpService; + + public void setDpService(DataPointService dpService) { + this.dpService = dpService; + } + + public Object execute(CommandSession session) throws Exception { + DataPoint dp = new DataPoint(); + dp.setName( name ); + dpService.add( dp ); + return null; + } + +} diff --git a/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/command/DeleteAllCommand.java b/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/command/DeleteAllCommand.java new file mode 100644 index 00000000..0d404ae1 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/command/DeleteAllCommand.java @@ -0,0 +1,37 @@ +/* + * 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 org.hibernate.osgitest.command; + +import org.apache.felix.gogo.commands.Action; +import org.apache.felix.gogo.commands.Command; +import org.apache.felix.service.command.CommandSession; +import org.hibernate.osgitest.DataPointService; + +@Command(scope = "dp", name = "deleteAllJPA") +public class DeleteAllCommand implements Action { +private DataPointService dpService; + + public void setDpService(DataPointService dpService) { + this.dpService = dpService; + } + + public Object execute(CommandSession session) throws Exception { + dpService.deleteAll(); + return null; + } + +} diff --git a/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/command/GetAllCommand.java b/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/command/GetAllCommand.java new file mode 100644 index 00000000..6873e463 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/command/GetAllCommand.java @@ -0,0 +1,43 @@ +/* + * 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 org.hibernate.osgitest.command; + +import java.util.List; + +import org.apache.felix.gogo.commands.Action; +import org.apache.felix.gogo.commands.Command; +import org.apache.felix.service.command.CommandSession; +import org.hibernate.osgitest.DataPointService; +import org.hibernate.osgitest.entity.DataPoint; + +@Command(scope = "dp", name = "getAllJPA") +public class GetAllCommand implements Action { + private DataPointService dpService; + + public void setDpService(DataPointService dpService) { + this.dpService = dpService; + } + + public Object execute(CommandSession session) throws Exception { + List<DataPoint> dps = dpService.getAll(); + for (DataPoint dp : dps) { + System.out.println(dp.getId() + ", " + dp.getName()); + } + return null; + } + +} diff --git a/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/command/UpdateCommand.java b/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/command/UpdateCommand.java new file mode 100644 index 00000000..5de8983d --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/command/UpdateCommand.java @@ -0,0 +1,47 @@ +/* + * 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 org.hibernate.osgitest.command; + +import org.apache.felix.gogo.commands.Action; +import org.apache.felix.gogo.commands.Argument; +import org.apache.felix.gogo.commands.Command; +import org.apache.felix.service.command.CommandSession; +import org.hibernate.osgitest.DataPointService; +import org.hibernate.osgitest.entity.DataPoint; + +@Command(scope = "dp", name = "updateJPA") +public class UpdateCommand implements Action { + @Argument(index=0, name="Id", required=true, description="Id", multiValued=false) + String id; + + @Argument(index=1, name="Name", required=true, description="Name", multiValued=false) + String name; + + private DataPointService dpService; + + public void setDpService(DataPointService dpService) { + this.dpService = dpService; + } + + public Object execute(CommandSession session) throws Exception { + DataPoint dp = dpService.get( Long.valueOf( id ) ); + dp.setName( name ); + dpService.update( dp ); + return null; + } + +} diff --git a/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/entity/DataPoint.java b/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/entity/DataPoint.java new file mode 100644 index 00000000..2a566d88 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/java/org/hibernate/osgitest/entity/DataPoint.java @@ -0,0 +1,53 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * JBoss, Home of Professional Open Source + * Copyright 2013 Red Hat Inc. and/or its affiliates and other contributors + * as indicated by the @authors tag. All rights reserved. + * See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the GNU Lesser General Public License, v. 2.1. + * This program is distributed in the hope that it will be useful, but WITHOUT A + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * You should have received a copy of the GNU Lesser General Public License, + * v.2.1 along with this distribution; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ +package org.hibernate.osgitest.entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; + +/** + * @author Brett Meyer + */ +@Entity +public class DataPoint { + @Id + @GeneratedValue + private long id; + + private String name; + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/resources/META-INF/persistence.xml b/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/resources/META-INF/persistence.xml new file mode 100644 index 00000000..b0ebfe70 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/resources/META-INF/persistence.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Hibernate, Relational Persistence for Idiomatic Java + ~ + ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later. + ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. + --> +<persistence xmlns="http://java.sun.com/xml/ns/persistence" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + version="1.0"> + <persistence-unit name="unmanaged-jpa"> + <class>org.hibernate.osgitest.entity.DataPoint</class> + <exclude-unlisted-classes>true</exclude-unlisted-classes> + + <properties> + <property name="hibernate.connection.driver_class" value="org.h2.Driver"/> + <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/> + <property name="hibernate.connection.url" value="jdbc:h2:mem:db1;DB_CLOSE_DELAY=-1;MVCC=TRUE"/> + <property name="hibernate.connection.username" value="sa"/> + <property name="hibernate.connection.password" value=""/> + <property name="hibernate.hbm2ddl.auto" value="create-drop"/> + </properties> + </persistence-unit> +</persistence> \ No newline at end of file diff --git a/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/resources/OSGI-INF/blueprint/blueprint.xml new file mode 100644 index 00000000..283ee107 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/unmanaged-jpa/src/main/resources/OSGI-INF/blueprint/blueprint.xml @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Hibernate, Relational Persistence for Idiomatic Java + ~ + ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later. + ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. + --> +<blueprint default-activation="eager" + xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + + <bean id="dpService" class="org.hibernate.osgitest.DataPointServiceImpl"/> + <service ref="dpService" interface="org.hibernate.osgitest.DataPointService"/> + + <!-- This demonstrates how to register your custom implementations of Hibernate extension points. --> + + <bean id="integrator" class="org.hibernate.osgitest.TestIntegrator"/> + <service ref="integrator" interface="org.hibernate.integrator.spi.Integrator"/> + + <bean id="strategyRegistrationProvider" class="org.hibernate.osgitest.TestStrategyRegistrationProvider"/> + <service ref="strategyRegistrationProvider" + interface="org.hibernate.boot.registry.selector.StrategyRegistrationProvider"/> + + <bean id="typeContributor" class="org.hibernate.osgitest.TestTypeContributor"/> + <service ref="typeContributor" interface="org.hibernate.boot.model.TypeContributor"/> + + <!-- This bundle makes use of Karaf commands to demonstrate core persistence operations. Feel free to remove it. --> + <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0"> + <command> + <action class="org.hibernate.osgitest.command.AddCommand"> + <property name="dpService" ref="dpService"/> + </action> + </command> + <command> + <action class="org.hibernate.osgitest.command.UpdateCommand"> + <property name="dpService" ref="dpService"/> + </action> + </command> + <command> + <action class="org.hibernate.osgitest.command.GetAllCommand"> + <property name="dpService" ref="dpService"/> + </action> + </command> + <command> + <action class="org.hibernate.osgitest.command.DeleteAllCommand"> + <property name="dpService" ref="dpService"/> + </action> + </command> + </command-bundle> +</blueprint> diff --git a/src/it/tutorials-5.0.12/osgi/unmanaged-native/features.xml b/src/it/tutorials-5.0.12/osgi/unmanaged-native/features.xml new file mode 100644 index 00000000..8d9223ca --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/unmanaged-native/features.xml @@ -0,0 +1,79 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Hibernate, Relational Persistence for Idiomatic Java + ~ + ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later. + ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. + --> +<features> + <feature name="hibernate-test"> + + <!--<feature>karaf-framework</feature>--> + + <!-- JTA --> + <bundle start-level="30">mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1</bundle> + + <!-- JPA --> + <bundle start-level="30">mvn:org.hibernate.javax.persistence/hibernate-jpa-2.1-api/1.0.0.Final</bundle> + + <!-- Taken from Karaf-Tutorial --> + <bundle>mvn:commons-collections/commons-collections/3.2.1</bundle> + <bundle>mvn:commons-pool/commons-pool/1.5.4</bundle> + <bundle>mvn:commons-dbcp/commons-dbcp/1.4</bundle> + <bundle>mvn:commons-lang/commons-lang/2.6</bundle> + <bundle>wrap:mvn:net.sourceforge.serp/serp/1.13.1</bundle> + + <bundle>mvn:com.h2database/h2/1.3.170</bundle> + + <!-- These do not natively support OSGi, so using 3rd party bundles. --> + <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.antlr/2.7.7_5</bundle> + <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.dom4j/1.6.1_5</bundle> + + <!-- These do not natively support OSGi, so wrap with BND. --> + <bundle>wrap:mvn:org.jboss/jandex/1.1.0.Final</bundle> + <!-- Optional. Needed to test C3P0 connection pools. --> + <!-- <bundle>wrap:mvn:c3p0/c3p0/0.9.1</bundle> --> + <!-- Optional. Needed to test Proxool connection pools. --> + <!-- <bundle>wrap:mvn:proxool/proxool/0.8.3</bundle> --> + <!-- Optional. Needed to test ehcache 2lc. --> + <!-- <bundle>wrap:mvn:net.sf.ehcache/ehcache-core/2.4.3</bundle> --> + + <bundle>mvn:com.fasterxml/classmate/0.8.0</bundle> + <bundle>mvn:org.apache.logging.log4j/log4j-api/2.0</bundle> + <bundle>mvn:log4j/log4j/1.2.17</bundle> + <bundle>mvn:org.jboss.logging/jboss-logging/3.2.1.Final</bundle> + <bundle>mvn:org.javassist/javassist/3.18.1-GA</bundle> + + <bundle>mvn:org.hibernate.common/hibernate-commons-annotations/4.0.5.Final</bundle> + + <!-- JACC is optional. --> + <!--<bundle>mvn:javax.servlet/javax.servlet-api/3.0.1</bundle> + <bundle>mvn:org.jboss.spec.javax.security.jacc/jboss-jacc-api_1.4_spec/1.0.2.Final</bundle>--> + + <!-- hibernate-validator is optional. --> + <!--<bundle>wrap:mvn:javax.validation/validation-api/1.0.0.GA</bundle> + <bundle>mvn:org.hibernate/hibernate-validator/4.2.0.Final</bundle>--> + + <!-- Optional. Needed to test infinispan 2lc. --> + <!-- IMPORTANT: Infinispan requires the JRE sun.misc package. You + MUST enable this in your OSGi container. For Karaf, add + "org.osgi.framework.system.packages.extra=sun.misc" to etc/config.properties --> + <!-- <bundle>wrap:mvn:org.jboss.marshalling/jboss-marshalling/1.3.17.GA</bundle> + <bundle>wrap:mvn:org.jboss.marshalling/jboss-marshalling-river/1.3.17.GA</bundle> + <bundle>wrap:mvn:org.jboss/staxmapper/1.1.0.Final</bundle> + <bundle>mvn:org.jgroups/jgroups/3.2.8.Final</bundle> + <bundle>mvn:org.infinispan/infinispan-core/5.2.0.Beta3</bundle> --> + + <bundle>mvn:org.hibernate/hibernate-core/5.0.12.Final</bundle> + <!-- TODO: Shouldn't need this, but hibernate-osgi's activator is a catch-all for SF and EMF. --> + <bundle>mvn:org.hibernate/hibernate-entitymanager/5.0.12.Final</bundle> + <bundle>mvn:org.hibernate/hibernate-envers/5.0.12.Final</bundle> + <!-- <bundle>mvn:org.hibernate/hibernate-c3p0/5.0.12.Final</bundle> --> + <!-- <bundle>mvn:org.hibernate/hibernate-proxool/5.0.12.Final</bundle> --> + <!-- <bundle>mvn:org.hibernate/hibernate-ehcache/5.0.12.Final</bundle> --> + <!-- <bundle>mvn:org.hibernate/hibernate-infinispan/5.0.12.Final</bundle> --> + <bundle>mvn:org.hibernate/hibernate-osgi/5.0.12.Final</bundle> + + <bundle>mvn:org.hibernate.osgi/unmanaged-native/1.0.0</bundle> + </feature> +</features> diff --git a/src/it/tutorials-5.0.12/osgi/unmanaged-native/pom.xml b/src/it/tutorials-5.0.12/osgi/unmanaged-native/pom.xml new file mode 100644 index 00000000..ab10019e --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/unmanaged-native/pom.xml @@ -0,0 +1,89 @@ +<!-- + ~ Hibernate, Relational Persistence for Idiomatic Java + ~ + ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later. + ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. + --> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>org.hibernate.osgi</groupId> + <artifactId>unmanaged-native</artifactId> + <version>1.0.0</version> + <packaging>bundle</packaging> + + <dependencies> + <dependency> + <groupId>org.hibernate.javax.persistence</groupId> + <artifactId>hibernate-jpa-2.1-api</artifactId> + <version>1.0.0.Final</version> + </dependency> + <dependency> + <groupId>org.osgi</groupId> + <artifactId>org.osgi.core</artifactId> + <version>4.3.1</version> + </dependency> + <dependency> + <groupId>org.osgi</groupId> + <artifactId>org.osgi.enterprise</artifactId> + <version>4.2.0</version> + </dependency> + <dependency> + <groupId>org.apache.karaf.shell</groupId> + <artifactId>org.apache.karaf.shell.console</artifactId> + <version>2.3.0</version> + </dependency> + <dependency> + <groupId>org.hibernate</groupId> + <artifactId>hibernate-core</artifactId> + <version>5.0.12.Final</version> + </dependency> + <dependency> + <groupId>org.hibernate</groupId> + <artifactId>hibernate-envers</artifactId> + <version>5.0.12.Final</version> + </dependency> + <dependency> + <groupId>com.h2database</groupId> + <artifactId>h2</artifactId> + <version>1.3.170</version> + </dependency> + + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Bundle-SymbolicName>org.hibernate.osgi.unmanaged-native</Bundle-SymbolicName> + <Bundle-Name>unmanaged-native</Bundle-Name> + <Bundle-Version>1.0.0</Bundle-Version> + <Export-Package> + org.hibernate.osgitest, + org.hibernate.osgitest.entity + </Export-Package> + <Import-Package> + org.apache.felix.service.command, + org.apache.felix.gogo.commands, + org.apache.karaf.shell.console, + org.apache.karaf.shell.commands, + org.h2, + org.hibernate, + org.hibernate.cfg, + org.hibernate.service, + javax.persistence;version="[1.0.0,2.1.0]", + <!-- Needed for proxying's Javassist enhancement during runtime --> + org.hibernate.proxy, + javassist.util.proxy, + * + </Import-Package> + </instructions> + </configuration> + </plugin> + </plugins> + </build> +</project> diff --git a/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/DataPointService.java b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/DataPointService.java new file mode 100644 index 00000000..12fb79a9 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/DataPointService.java @@ -0,0 +1,47 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * JBoss, Home of Professional Open Source + * Copyright 2013 Red Hat Inc. and/or its affiliates and other contributors + * as indicated by the @authors tag. All rights reserved. + * See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the GNU Lesser General Public License, v. 2.1. + * This program is distributed in the hope that it will be useful, but WITHOUT A + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * You should have received a copy of the GNU Lesser General Public License, + * v.2.1 along with this distribution; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ +package org.hibernate.osgitest; + +import java.util.List; +import java.util.Map; + +import org.hibernate.envers.DefaultRevisionEntity; +import org.hibernate.osgitest.entity.DataPoint; + +/** + * @author Brett Meyer + */ +public interface DataPointService { + + public void add(DataPoint dp); + + public void update(DataPoint dp); + + public DataPoint get(long id); + + public DataPoint load(long id); + + public List<DataPoint> getAll(); + + public Map<Number, DefaultRevisionEntity> getRevisions(long id); + + public void deleteAll(); +} diff --git a/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/DataPointServiceImpl.java b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/DataPointServiceImpl.java new file mode 100644 index 00000000..a8f6f720 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/DataPointServiceImpl.java @@ -0,0 +1,103 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * JBoss, Home of Professional Open Source + * Copyright 2013 Red Hat Inc. and/or its affiliates and other contributors + * as indicated by the @authors tag. All rights reserved. + * See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the GNU Lesser General Public License, v. 2.1. + * This program is distributed in the hope that it will be useful, but WITHOUT A + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * You should have received a copy of the GNU Lesser General Public License, + * v.2.1 along with this distribution; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ +package org.hibernate.osgitest; + +import org.hibernate.Session; +import org.hibernate.criterion.Restrictions; +import org.hibernate.envers.AuditReader; +import org.hibernate.envers.AuditReaderFactory; +import org.hibernate.envers.DefaultRevisionEntity; +import org.hibernate.osgitest.entity.DataPoint; + +import java.util.HashSet; +import java.util.List; +import java.util.Map; + +/** + * @author Brett Meyer + */ +public class DataPointServiceImpl implements DataPointService { + + private HibernateUtil hibernateUtil = new HibernateUtil(); + + public void add(DataPoint dp) { + Session s = hibernateUtil.getSession(); + s.getTransaction().begin(); + s.persist( dp ); + s.getTransaction().commit(); + s.close(); + } + + public void update(DataPoint dp) { + Session s = hibernateUtil.getSession(); + s.getTransaction().begin(); + s.update( dp ); + s.getTransaction().commit(); + s.close(); + } + + public DataPoint get(long id) { + Session s = hibernateUtil.getSession(); + s.getTransaction().begin(); + DataPoint dp = (DataPoint) s.createCriteria( DataPoint.class ).add( + Restrictions.eq( "id", id ) ).uniqueResult(); + s.getTransaction().commit(); + s.close(); + return dp; + } + + // Test lazy loading (mainly to make sure the proxy classes work in OSGi) + public DataPoint load(long id) { + Session s = hibernateUtil.getSession(); + s.getTransaction().begin(); + DataPoint dp = (DataPoint) s.load( DataPoint.class, new Long(id) ); + // initialize + dp.getName(); + s.getTransaction().commit(); + s.close(); + return dp; + } + + public List<DataPoint> getAll() { + Session s = hibernateUtil.getSession(); + s.getTransaction().begin(); + List list = s.createQuery( "from DataPoint" ).list(); + s.getTransaction().commit(); + s.close(); + return list; + } + + public Map<Number, DefaultRevisionEntity> getRevisions(long id) { + Session s = hibernateUtil.getSession(); + AuditReader reader = AuditReaderFactory.get(s); + List<Number> revisionNums = reader.getRevisions( DataPoint.class, id ); + return reader.findRevisions( DefaultRevisionEntity.class, new HashSet<Number>(revisionNums) ); + } + + public void deleteAll() { + Session s = hibernateUtil.getSession(); + s.getTransaction().begin(); + s.createQuery( "delete from DataPoint" ).executeUpdate(); + s.getTransaction().commit(); + s.close(); + } + +} diff --git a/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/HibernateUtil.java b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/HibernateUtil.java new file mode 100644 index 00000000..15fb4c7d --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/HibernateUtil.java @@ -0,0 +1,53 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * JBoss, Home of Professional Open Source + * Copyright 2013 Red Hat Inc. and/or its affiliates and other contributors + * as indicated by the @authors tag. All rights reserved. + * See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the GNU Lesser General Public License, v. 2.1. + * This program is distributed in the hope that it will be useful, but WITHOUT A + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * You should have received a copy of the GNU Lesser General Public License, + * v.2.1 along with this distribution; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ +package org.hibernate.osgitest; + +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.osgi.framework.Bundle; +import org.osgi.framework.BundleContext; +import org.osgi.framework.FrameworkUtil; +import org.osgi.framework.ServiceReference; + +/** + * @author Brett Meyer + */ + +public class HibernateUtil { + + private SessionFactory sf; + + public Session getSession() { + return getSessionFactory().openSession(); + } + + private SessionFactory getSessionFactory() { + if ( sf == null ) { + Bundle thisBundle = FrameworkUtil.getBundle( HibernateUtil.class ); + // Could get this by wiring up OsgiTestBundleActivator as well. + BundleContext context = thisBundle.getBundleContext(); + + ServiceReference sr = context.getServiceReference( SessionFactory.class.getName() ); + sf = (SessionFactory) context.getService( sr ); + } + return sf; + } +} diff --git a/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/TestIntegrator.java b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/TestIntegrator.java new file mode 100644 index 00000000..95b2e631 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/TestIntegrator.java @@ -0,0 +1,45 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * JBoss, Home of Professional Open Source + * Copyright 2013 Red Hat Inc. and/or its affiliates and other contributors + * as indicated by the @authors tag. All rights reserved. + * See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the GNU Lesser General Public License, v. 2.1. + * This program is distributed in the hope that it will be useful, but WITHOUT A + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * You should have received a copy of the GNU Lesser General Public License, + * v.2.1 along with this distribution; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ +package org.hibernate.osgitest; + +import org.hibernate.boot.Metadata; +import org.hibernate.engine.spi.SessionFactoryImplementor; +import org.hibernate.integrator.spi.Integrator; +import org.hibernate.service.spi.SessionFactoryServiceRegistry; + + +/** + * @author Brett Meyer + */ +public class TestIntegrator implements Integrator { + + public void integrate( + Metadata metadata, + SessionFactoryImplementor sessionFactory, + SessionFactoryServiceRegistry serviceRegistry) { + System.out.println("Integrator#integrate"); + } + + public void disintegrate(SessionFactoryImplementor sessionFactory, SessionFactoryServiceRegistry serviceRegistry) { + System.out.println("Integrator#disintegrate"); + } + +} diff --git a/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/TestStrategyRegistrationProvider.java b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/TestStrategyRegistrationProvider.java new file mode 100644 index 00000000..f7ad26f5 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/TestStrategyRegistrationProvider.java @@ -0,0 +1,37 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * JBoss, Home of Professional Open Source + * Copyright 2013 Red Hat Inc. and/or its affiliates and other contributors + * as indicated by the @authors tag. All rights reserved. + * See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the GNU Lesser General Public License, v. 2.1. + * This program is distributed in the hope that it will be useful, but WITHOUT A + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * You should have received a copy of the GNU Lesser General Public License, + * v.2.1 along with this distribution; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ +package org.hibernate.osgitest; + +import java.util.Collections; + +import org.hibernate.boot.registry.selector.StrategyRegistration; +import org.hibernate.boot.registry.selector.StrategyRegistrationProvider; + +/** + * @author Brett Meyer + */ +public class TestStrategyRegistrationProvider implements StrategyRegistrationProvider { + + public Iterable<StrategyRegistration> getStrategyRegistrations() { + System.out.println("StrategyRegistrationProvider#getStrategyRegistrations"); + return Collections.EMPTY_LIST; + } +} diff --git a/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/TestTypeContributor.java b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/TestTypeContributor.java new file mode 100644 index 00000000..87a83841 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/TestTypeContributor.java @@ -0,0 +1,37 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * JBoss, Home of Professional Open Source + * Copyright 2013 Red Hat Inc. and/or its affiliates and other contributors + * as indicated by the @authors tag. All rights reserved. + * See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the GNU Lesser General Public License, v. 2.1. + * This program is distributed in the hope that it will be useful, but WITHOUT A + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * You should have received a copy of the GNU Lesser General Public License, + * v.2.1 along with this distribution; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ +package org.hibernate.osgitest; + +import org.hibernate.boot.model.TypeContributions; +import org.hibernate.boot.model.TypeContributor; +import org.hibernate.service.ServiceRegistry; + + +/** + * @author Brett Meyer + */ +public class TestTypeContributor implements TypeContributor { + + public void contribute(TypeContributions typeContributions, ServiceRegistry serviceRegistry) { + System.out.println("TypeContributor#contribute"); + } + +} diff --git a/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/command/AddCommand.java b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/command/AddCommand.java new file mode 100644 index 00000000..9e9844c3 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/command/AddCommand.java @@ -0,0 +1,44 @@ +/* + * 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 org.hibernate.osgitest.command; + +import org.apache.felix.gogo.commands.Action; +import org.apache.felix.gogo.commands.Argument; +import org.apache.felix.gogo.commands.Command; +import org.apache.felix.service.command.CommandSession; +import org.hibernate.osgitest.DataPointService; +import org.hibernate.osgitest.entity.DataPoint; + +@Command(scope = "dp", name = "add") +public class AddCommand implements Action { + @Argument(index=0, name="Name", required=true, description="Name", multiValued=false) + String name; + + private DataPointService dpService; + + public void setDpService(DataPointService dpService) { + this.dpService = dpService; + } + + public Object execute(CommandSession session) throws Exception { + DataPoint dp = new DataPoint(); + dp.setName( name ); + dpService.add( dp ); + return null; + } + +} diff --git a/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/command/DeleteAllCommand.java b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/command/DeleteAllCommand.java new file mode 100644 index 00000000..d6c4ccf6 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/command/DeleteAllCommand.java @@ -0,0 +1,37 @@ +/* + * 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 org.hibernate.osgitest.command; + +import org.apache.felix.gogo.commands.Action; +import org.apache.felix.gogo.commands.Command; +import org.apache.felix.service.command.CommandSession; +import org.hibernate.osgitest.DataPointService; + +@Command(scope = "dp", name = "deleteAll") +public class DeleteAllCommand implements Action { +private DataPointService dpService; + + public void setDpService(DataPointService dpService) { + this.dpService = dpService; + } + + public Object execute(CommandSession session) throws Exception { + dpService.deleteAll(); + return null; + } + +} diff --git a/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/command/GetAllCommand.java b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/command/GetAllCommand.java new file mode 100644 index 00000000..ebdac60e --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/command/GetAllCommand.java @@ -0,0 +1,43 @@ +/* + * 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 org.hibernate.osgitest.command; + +import java.util.List; + +import org.apache.felix.gogo.commands.Action; +import org.apache.felix.gogo.commands.Command; +import org.apache.felix.service.command.CommandSession; +import org.hibernate.osgitest.DataPointService; +import org.hibernate.osgitest.entity.DataPoint; + +@Command(scope = "dp", name = "getAll") +public class GetAllCommand implements Action { + private DataPointService dpService; + + public void setDpService(DataPointService dpService) { + this.dpService = dpService; + } + + public Object execute(CommandSession session) throws Exception { + List<DataPoint> dps = dpService.getAll(); + for (DataPoint dp : dps) { + System.out.println(dp.getId() + ", " + dp.getName()); + } + return null; + } + +} diff --git a/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/command/GetCommand.java b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/command/GetCommand.java new file mode 100644 index 00000000..0597d709 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/command/GetCommand.java @@ -0,0 +1,43 @@ +/* + * 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 org.hibernate.osgitest.command; + +import org.apache.felix.gogo.commands.Action; +import org.apache.felix.gogo.commands.Argument; +import org.apache.felix.gogo.commands.Command; +import org.apache.felix.service.command.CommandSession; +import org.hibernate.osgitest.DataPointService; +import org.hibernate.osgitest.entity.DataPoint; + +@Command(scope = "dp", name = "get") +public class GetCommand implements Action { + @Argument(index = 0, name = "Id", required = true, description = "Id", multiValued = false) + String id; + + private DataPointService dpService; + + public void setDpService(DataPointService dpService) { + this.dpService = dpService; + } + + public Object execute(CommandSession session) throws Exception { + DataPoint dp = dpService.get( Long.valueOf( id ) ); + System.out.println( dp.getId() + ", " + dp.getName() ); + return null; + } + +} diff --git a/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/command/GetRevisionsCommand.java b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/command/GetRevisionsCommand.java new file mode 100644 index 00000000..b4573f62 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/command/GetRevisionsCommand.java @@ -0,0 +1,48 @@ +/* + * 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 org.hibernate.osgitest.command; + +import java.util.Map; + +import org.apache.felix.gogo.commands.Action; +import org.apache.felix.gogo.commands.Argument; +import org.apache.felix.gogo.commands.Command; +import org.apache.felix.service.command.CommandSession; +import org.hibernate.envers.DefaultRevisionEntity; +import org.hibernate.osgitest.DataPointService; + +@Command(scope = "dp", name = "getRevisions") +public class GetRevisionsCommand implements Action { + @Argument(index=0, name="Id", required=true, description="Id", multiValued=false) + String id; + + private DataPointService dpService; + + public void setDpService(DataPointService dpService) { + this.dpService = dpService; + } + + public Object execute(CommandSession session) throws Exception { + Map<Number, DefaultRevisionEntity> revisions = dpService.getRevisions(Long.valueOf( id )); + for (Number revisionNum : revisions.keySet()) { + DefaultRevisionEntity dre = revisions.get( revisionNum ); + System.out.println(revisionNum + ": " + dre.getId() + ", " + dre.getTimestamp()); + } + return null; + } + +} diff --git a/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/command/LoadCommand.java b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/command/LoadCommand.java new file mode 100644 index 00000000..3451a986 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/command/LoadCommand.java @@ -0,0 +1,43 @@ +/* + * 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 org.hibernate.osgitest.command; + +import org.apache.felix.gogo.commands.Action; +import org.apache.felix.gogo.commands.Argument; +import org.apache.felix.gogo.commands.Command; +import org.apache.felix.service.command.CommandSession; +import org.hibernate.osgitest.DataPointService; +import org.hibernate.osgitest.entity.DataPoint; + +@Command(scope = "dp", name = "load") +public class LoadCommand implements Action { + @Argument(index = 0, name = "Id", required = true, description = "Id", multiValued = false) + String id; + + private DataPointService dpService; + + public void setDpService(DataPointService dpService) { + this.dpService = dpService; + } + + public Object execute(CommandSession session) throws Exception { + DataPoint dp = dpService.load( Long.valueOf( id ) ); + System.out.println( dp.getId() + ", " + dp.getName() ); + return null; + } + +} diff --git a/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/command/UpdateCommand.java b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/command/UpdateCommand.java new file mode 100644 index 00000000..f6949674 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/command/UpdateCommand.java @@ -0,0 +1,47 @@ +/* + * 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 org.hibernate.osgitest.command; + +import org.apache.felix.gogo.commands.Action; +import org.apache.felix.gogo.commands.Argument; +import org.apache.felix.gogo.commands.Command; +import org.apache.felix.service.command.CommandSession; +import org.hibernate.osgitest.DataPointService; +import org.hibernate.osgitest.entity.DataPoint; + +@Command(scope = "dp", name = "update") +public class UpdateCommand implements Action { + @Argument(index=0, name="Id", required=true, description="Id", multiValued=false) + String id; + + @Argument(index=1, name="Name", required=true, description="Name", multiValued=false) + String name; + + private DataPointService dpService; + + public void setDpService(DataPointService dpService) { + this.dpService = dpService; + } + + public Object execute(CommandSession session) throws Exception { + DataPoint dp = dpService.get( Long.valueOf( id ) ); + dp.setName( name ); + dpService.update( dp ); + return null; + } + +} diff --git a/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/entity/DataPoint.java b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/entity/DataPoint.java new file mode 100644 index 00000000..2e5ef724 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/java/org/hibernate/osgitest/entity/DataPoint.java @@ -0,0 +1,58 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * JBoss, Home of Professional Open Source + * Copyright 2013 Red Hat Inc. and/or its affiliates and other contributors + * as indicated by the @authors tag. All rights reserved. + * See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the GNU Lesser General Public License, v. 2.1. + * This program is distributed in the hope that it will be useful, but WITHOUT A + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * You should have received a copy of the GNU Lesser General Public License, + * v.2.1 along with this distribution; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ +package org.hibernate.osgitest.entity; + +import java.io.Serializable; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; + +import org.hibernate.envers.Audited; + +/** + * @author Brett Meyer + */ +@Entity +@Audited +public class DataPoint implements Serializable { + @Id + @GeneratedValue + private long id; + + private String name; + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/resources/OSGI-INF/blueprint/blueprint.xml new file mode 100644 index 00000000..f62626a1 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/resources/OSGI-INF/blueprint/blueprint.xml @@ -0,0 +1,65 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Hibernate, Relational Persistence for Idiomatic Java + ~ + ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later. + ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. + --> +<blueprint default-activation="eager" + xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" + > + + <bean id="dpService" class="org.hibernate.osgitest.DataPointServiceImpl"/> + <service ref="dpService" interface="org.hibernate.osgitest.DataPointService"/> + + <!-- This demonstrates how to register your custom implementations of Hibernate extension points. --> + + <bean id="integrator" class="org.hibernate.osgitest.TestIntegrator"/> + <service ref="integrator" interface="org.hibernate.integrator.spi.Integrator"/> + + <bean id="strategyRegistrationProvider" class="org.hibernate.osgitest.TestStrategyRegistrationProvider"/> + <service ref="strategyRegistrationProvider" + interface="org.hibernate.boot.registry.selector.StrategyRegistrationProvider"/> + + <bean id="typeContributor" class="org.hibernate.osgitest.TestTypeContributor"/> + <service ref="typeContributor" interface="org.hibernate.boot.model.TypeContributor"/> + + <!-- This bundle makes use of Karaf commands to demonstrate core persistence operations. Feel free to remove it. --> + <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0"> + <command> + <action class="org.hibernate.osgitest.command.AddCommand"> + <property name="dpService" ref="dpService"/> + </action> + </command> + <command> + <action class="org.hibernate.osgitest.command.UpdateCommand"> + <property name="dpService" ref="dpService"/> + </action> + </command> + <command> + <action class="org.hibernate.osgitest.command.GetCommand"> + <property name="dpService" ref="dpService"/> + </action> + </command> + <command> + <action class="org.hibernate.osgitest.command.LoadCommand"> + <property name="dpService" ref="dpService"/> + </action> + </command> + <command> + <action class="org.hibernate.osgitest.command.GetAllCommand"> + <property name="dpService" ref="dpService"/> + </action> + </command> + <command> + <action class="org.hibernate.osgitest.command.GetRevisionsCommand"> + <property name="dpService" ref="dpService"/> + </action> + </command> + <command> + <action class="org.hibernate.osgitest.command.DeleteAllCommand"> + <property name="dpService" ref="dpService"/> + </action> + </command> + </command-bundle> +</blueprint> diff --git a/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/resources/ehcache.xml b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/resources/ehcache.xml new file mode 100644 index 00000000..52d198d6 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/resources/ehcache.xml @@ -0,0 +1,94 @@ +<!-- + ~ Hibernate, Relational Persistence for Idiomatic Java + ~ + ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later. + ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. + --> +<ehcache> + + <!-- Sets the path to the directory where cache .data files are created. + + If the path is a Java System Property it is replaced by + its value in the running VM. + + The following properties are translated: + user.home - User's home directory + user.dir - User's current working directory + java.io.tmpdir - Default temp file path --> + <diskStore path="./target/tmp"/> + + + <!--Default Cache configuration. These will applied to caches programmatically created through + the CacheManager. + + The following attributes are required for defaultCache: + + maxInMemory - Sets the maximum number of objects that will be created in memory + eternal - Sets whether elements are eternal. If eternal, timeouts are ignored and the element + is never expired. + timeToIdleSeconds - Sets the time to idle for an element before it expires. Is only used + if the element is not eternal. Idle time is now - last accessed time + timeToLiveSeconds - Sets the time to live for an element before it expires. Is only used + if the element is not eternal. TTL is now - creation time + overflowToDisk - Sets whether elements can overflow to disk when the in-memory cache + has reached the maxInMemory limit. + + --> + <defaultCache + maxElementsInMemory="10000" + eternal="false" + timeToIdleSeconds="120" + timeToLiveSeconds="120" + overflowToDisk="true" + /> + + <!--Predefined caches. Add your cache configuration settings here. + If you do not have a configuration for your cache a WARNING will be issued when the + CacheManager starts + + The following attributes are required for defaultCache: + + name - Sets the name of the cache. This is used to identify the cache. It must be unique. + maxInMemory - Sets the maximum number of objects that will be created in memory + eternal - Sets whether elements are eternal. If eternal, timeouts are ignored and the element + is never expired. + timeToIdleSeconds - Sets the time to idle for an element before it expires. Is only used + if the element is not eternal. Idle time is now - last accessed time + timeToLiveSeconds - Sets the time to live for an element before it expires. Is only used + if the element is not eternal. TTL is now - creation time + overflowToDisk - Sets whether elements can overflow to disk when the in-memory cache + has reached the maxInMemory limit. + + --> + + <!-- Sample cache named sampleCache1 + This cache contains a maximum in memory of 10000 elements, and will expire + an element if it is idle for more than 5 minutes and lives for more than + 10 minutes. + + If there are more than 10000 elements it will overflow to the + disk cache, which in this configuration will go to wherever java.io.tmp is + defined on your system. On a standard Linux system this will be /tmp" + --> + <cache name="sampleCache1" + maxElementsInMemory="10000" + eternal="false" + timeToIdleSeconds="300" + timeToLiveSeconds="600" + overflowToDisk="true" + /> + + <!-- Sample cache named sampleCache2 + This cache contains 1000 elements. Elements will always be held in memory. + They are not expired. --> + <cache name="sampleCache2" + maxElementsInMemory="1000" + eternal="true" + timeToIdleSeconds="0" + timeToLiveSeconds="0" + overflowToDisk="false" + /> --> + + <!-- Place configuration for your caches following --> + +</ehcache> diff --git a/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/resources/hibernate.cfg.xml b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/resources/hibernate.cfg.xml new file mode 100644 index 00000000..7f9f2380 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/resources/hibernate.cfg.xml @@ -0,0 +1,52 @@ +<?xml version='1.0' encoding='utf-8'?> +<!-- + ~ Hibernate, Relational Persistence for Idiomatic Java + ~ + ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later. + ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. + --> +<!DOCTYPE hibernate-configuration PUBLIC +"-//Hibernate/Hibernate Configuration DTD//EN" +"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> + +<hibernate-configuration> + <session-factory> + <property name="hibernate.connection.driver_class">org.h2.Driver</property> + <property name="hibernate.connection.url">jdbc:h2:mem:db1;DB_CLOSE_DELAY=-1;MVCC=TRUE</property> + <property name="hibernate.connection.username">sa</property> + <property name="hibernate.connection.password"></property> + <property name="hibernate.dialect">org.hibernate.dialect.H2Dialect</property> + <property name="hibernate.hbm2ddl.auto">create-drop</property> + + <!-- <property name="hibernate.connection.pool_size">5</property> + <property name="hibernate.c3p0.min_size">50</property> + <property name="hibernate.c3p0.max_size">800</property> + <property name="hibernate.c3p0.max_statements">50</property> + <property name="hibernate.jdbc.batch_size">10</property> + <property name="hibernate.c3p0.timeout">300</property> + <property name="hibernate.c3p0.idle_test_period">3000</property> + <property name="hibernate.c3p0.testConnectionOnCheckout">true</property> --> + + <!-- <property name="hibernate.connection.pool_size">5</property> + <property name="hibernate.jdbc.batch_size">10</property> + <property name="hibernate.connection.provider_class">proxool</property> + <property name="hibernate.proxool.properties">pool-one.properties</property> + <property name="hibernate.proxool.pool_alias">pool-one</property> --> + + <!-- <property name="hibernate.cache.region_prefix">hibernate.test</property> + <property name="cache.use_query_cache">true</property> + <property name="cache.use_second_level_cache">true</property> + <property name="cache.use_structured_entries">true</property> + <property name="cache.region.factory_class">org.hibernate.cache.EhCacheRegionFactory</property> + <property name="net.sf.ehcache.configurationResourceName">file:///[PATH]/unmanaged-jpa/src/main/resources/ehcache.xml</property> --> + + <!-- <property name="hibernate.cache.region_prefix">hibernate.test</property> + <property name="cache.use_query_cache">true</property> + <property name="cache.use_second_level_cache">true</property> + <property name="cache.use_structured_entries">true</property> + <property name="cache.region.factory_class">org.hibernate.cache.infinispan.InfinispanRegionFactory</property> --> + + <mapping class="org.hibernate.osgitest.entity.DataPoint"/> + </session-factory> + +</hibernate-configuration> diff --git a/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/resources/pool-one.properties b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/resources/pool-one.properties new file mode 100644 index 00000000..7e1c4cf1 --- /dev/null +++ b/src/it/tutorials-5.0.12/osgi/unmanaged-native/src/main/resources/pool-one.properties @@ -0,0 +1,13 @@ +# +# Hibernate, Relational Persistence for Idiomatic Java +# +# License: GNU Lesser General Public License (LGPL), version 2.1 or later. +# See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. +# +jdbc-0.proxool.alias=pool-one +jdbc-0.proxool.driver-url=jdbc:h2:mem:db1;DB_CLOSE_DELAY=-1;MVCC=TRUE +jdbc-0.proxool.driver-class=org.h2.Driver +jdbc-0.user=sa +jdbc-0.password= +jdbc-0.proxool.maximum-connection-count=2 +jdbc-0.proxool.house-keeping-test-sql=select CURRENT_DATE \ No newline at end of file diff --git a/src/it/tutorials-5.0.12/pom.xml b/src/it/tutorials-5.0.12/pom.xml new file mode 100644 index 00000000..5aac7936 --- /dev/null +++ b/src/it/tutorials-5.0.12/pom.xml @@ -0,0 +1,77 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Hibernate, Relational Persistence for Idiomatic Java + ~ + ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later. + ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. + --> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + + <modelVersion>4.0.0</modelVersion> + + <groupId>org.hibernate.tutorials</groupId> + <artifactId>hibernate-tutorials</artifactId> + <version>5.0.12.Final</version> + <packaging>pom</packaging> + + <name>Hibernate Getting Started Guide Tutorials</name> + <description>Aggregator for the Hibernate tutorials presented in the Getting Started Guide</description> + + <properties> + <!-- Skip artifact deployment --> + <maven.deploy.skip>true</maven.deploy.skip> + </properties> + + <modules> + <module>basic</module> + <module>annotations</module> + <module>entitymanager</module> + <module>envers</module> + <module>osgi</module> + </modules> + + <dependencies> + <dependency> + <groupId>org.hibernate</groupId> + <artifactId>hibernate-core</artifactId> + <version>5.0.12.Final</version> + </dependency> + + <!-- Hibernate uses jboss-logging for logging, for the tutorials we will use the sl4fj-simple backend --> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-simple</artifactId> + <version>1.7.5</version> + </dependency> + + <!-- The tutorials use JUnit test cases to illustrate usage --> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.11</version> + </dependency> + + <!-- The tutorials use the H2 in-memory database --> + <dependency> + <groupId>com.h2database</groupId> + <artifactId>h2</artifactId> + <version>1.3.176</version> + </dependency> + </dependencies> + + <build> + <testResources> + <testResource> + <filtering>false</filtering> + <directory>src/test/java</directory> + <includes> + <include>**/*.xml</include> + </includes> + </testResource> + <testResource> + <directory>src/test/resources</directory> + </testResource> + </testResources> + </build> + +</project> -- 2.20.1