Author: allee8285
Date: Thu Apr 25 22:37:30 2013
New Revision: 1475992
URL: http://svn.apache.org/r1475992
Log:
OPENJPA-2371 - move gallery examples from main to test folder
Added:
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/ImageType.java
(with props)
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageConstraint.java
(with props)
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageContent.java
(with props)
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageContentValidator.java
(with props)
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageGroup.java
(with props)
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageValidator.java
(with props)
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/SequencedImageGroup.java
(with props)
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Album.java
(with props)
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Creator.java
(with props)
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Image.java
(with props)
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Location.java
(with props)
Removed:
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/main/java/org/apache/openjpa/example/gallery/ImageType.java
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/main/java/org/apache/openjpa/example/gallery/constraint/
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/main/java/org/apache/openjpa/example/gallery/model/
Modified:
openjpa/branches/2.1.x/openjpa-examples/image-gallery/pom.xml
Modified: openjpa/branches/2.1.x/openjpa-examples/image-gallery/pom.xml
URL:
http://svn.apache.org/viewvc/openjpa/branches/2.1.x/openjpa-examples/image-gallery/pom.xml?rev=1475992&r1=1475991&r2=1475992&view=diff
==============================================================================
--- openjpa/branches/2.1.x/openjpa-examples/image-gallery/pom.xml (original)
+++ openjpa/branches/2.1.x/openjpa-examples/image-gallery/pom.xml Thu Apr 25
22:37:30 2013
@@ -7,18 +7,18 @@
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.
+ under the License.
-->
-<!--
- Please keep the project tag on one line to avoid confusing
+<!--
+ Please keep the project tag on one line to avoid confusing
the release plugin.
-->
<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">
@@ -52,7 +52,7 @@
<version>${project.version}</version>
</dependency>
</dependencies>
-
+
<build>
<pluginManagement>
<plugins>
@@ -85,9 +85,9 @@
<executions>
<execution>
<id>enhancer</id>
- <phase>process-classes</phase>
+ <phase>process-test-classes</phase>
<goals>
- <goal>enhance</goal>
+ <goal>test-enhance</goal>
</goals>
</execution>
</executions>
Added:
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/ImageType.java
URL:
http://svn.apache.org/viewvc/openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/ImageType.java?rev=1475992&view=auto
==============================================================================
---
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/ImageType.java
(added)
+++
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/ImageType.java
Thu Apr 25 22:37:30 2013
@@ -0,0 +1,24 @@
+/*
+ * 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.apache.openjpa.example.gallery;
+
+public enum ImageType {
+ JPEG,
+ GIF
+}
Propchange:
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/ImageType.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageConstraint.java
URL:
http://svn.apache.org/viewvc/openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageConstraint.java?rev=1475992&view=auto
==============================================================================
---
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageConstraint.java
(added)
+++
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageConstraint.java
Thu Apr 25 22:37:30 2013
@@ -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.apache.openjpa.example.gallery.constraint;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+
+import org.apache.openjpa.example.gallery.ImageType;
+import static org.apache.openjpa.example.gallery.ImageType.GIF;
+import static org.apache.openjpa.example.gallery.ImageType.JPEG;
+
+/**
+ * Type-level annotation used to specify an image constraint. Uses
+ * ImageValidator to perform the validation.
+ */
+@Documented
+@Constraint(validatedBy = ImageValidator.class)
+@Target({ TYPE })
+@Retention(RUNTIME)
+public @interface ImageConstraint {
+ String message() default "Image data is not a supported format.";
+ Class<?>[] groups() default {};
+ Class<? extends Payload>[] payload() default {};
+ ImageType[] value() default { GIF, JPEG };
+}
Propchange:
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageConstraint.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageContent.java
URL:
http://svn.apache.org/viewvc/openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageContent.java?rev=1475992&view=auto
==============================================================================
---
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageContent.java
(added)
+++
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageContent.java
Thu Apr 25 22:37:30 2013
@@ -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.apache.openjpa.example.gallery.constraint;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+
+import org.apache.openjpa.example.gallery.ImageType;
+import static org.apache.openjpa.example.gallery.ImageType.GIF;
+import static org.apache.openjpa.example.gallery.ImageType.JPEG;
+
+/**
+ * Attribute-level annotation used to specify an image content constraint.
Uses
+ * ImageContentValidator to perform the validation.
+ */
+@Documented
+@Constraint(validatedBy = ImageContentValidator.class)
+@Target({ METHOD, FIELD })
+@Retention(RUNTIME)
+public @interface ImageContent {
+ String message() default "Image data is not a supported format.";
+ Class<?>[] groups() default {};
+ Class<? extends Payload>[] payload() default {};
+ ImageType[] value() default { GIF, JPEG };
+}
Propchange:
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageContent.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageContentValidator.java
URL:
http://svn.apache.org/viewvc/openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageContentValidator.java?rev=1475992&view=auto
==============================================================================
---
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageContentValidator.java
(added)
+++
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageContentValidator.java
Thu Apr 25 22:37:30 2013
@@ -0,0 +1,72 @@
+/*
+ * 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.apache.openjpa.example.gallery.constraint;
+
+import java.util.Arrays;
+import java.util.List;
+
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+
+import org.apache.openjpa.example.gallery.ImageType;
+
+/**
+ * Simple check that file format is of a supported type
+ */
+public class ImageContentValidator implements
ConstraintValidator<ImageContent, byte[]> {
+
+ private List<ImageType> allowedTypes = null;
+ /**
+ * Configure the constraint validator based on the image
+ * types it should support.
+ * @param constraint the constraint definition
+ */
+ public void initialize(ImageContent constraint) {
+ allowedTypes = Arrays.asList(constraint.value());
+ }
+
+ /**
+ * Validate a specified value.
+ */
+ public boolean isValid(byte[] value, ConstraintValidatorContext context) {
+ if (value == null) {
+ return false;
+ }
+ // Verify the GIF header is either GIF87 or GIF89
+ if (allowedTypes.contains(ImageType.GIF)) {
+ String gifHeader = new String(value, 0, 6);
+ if (value.length >= 6 &&
+ (gifHeader.equalsIgnoreCase("GIF87a") ||
+ gifHeader.equalsIgnoreCase("GIF89a"))) {
+ return true;
+ }
+ }
+ // Verify the JPEG begins with SOI & ends with EOI
+ if (allowedTypes.contains(ImageType.JPEG)) {
+ if (value.length >= 4 &&
+ value[0] == 0xff && value[1] == 0xd8 &&
+ value[value.length - 2] == 0xff &&
+ value[value.length -1] == 0xd9) {
+ return true;
+ }
+ }
+ // Unknown file format
+ return false;
+ }
+}
Propchange:
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageContentValidator.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageGroup.java
URL:
http://svn.apache.org/viewvc/openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageGroup.java?rev=1475992&view=auto
==============================================================================
---
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageGroup.java
(added)
+++
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageGroup.java
Thu Apr 25 22:37:30 2013
@@ -0,0 +1,26 @@
+/*
+ * 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.apache.openjpa.example.gallery.constraint;
+
+/**
+ * Simple interface used to specify validation group: ImageGroup
+ */
+public interface ImageGroup {
+
+}
Propchange:
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageGroup.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageValidator.java
URL:
http://svn.apache.org/viewvc/openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageValidator.java?rev=1475992&view=auto
==============================================================================
---
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageValidator.java
(added)
+++
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageValidator.java
Thu Apr 25 22:37:30 2013
@@ -0,0 +1,90 @@
+/*
+ * 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.apache.openjpa.example.gallery.constraint;
+
+import java.util.Arrays;
+import java.util.List;
+
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+
+import org.apache.openjpa.example.gallery.ImageType;
+import org.apache.openjpa.example.gallery.model.Image;
+
+/**
+ * Simple validator used to verify that image data is of a supported type
+ */
+public class ImageValidator implements ConstraintValidator<ImageConstraint,
Image> {
+
+ private List<ImageType> allowedTypes = null;
+ /**
+ * Configure the constraint validator based on the image
+ * types it should support.
+ * @param constraint the constraint definition
+ */
+ public void initialize(ImageConstraint constraint) {
+ allowedTypes = Arrays.asList(constraint.value());
+ }
+
+ /**
+ * Validate a specified value.
+ */
+ public boolean isValid(Image value, ConstraintValidatorContext context) {
+ // JSR-303 best practice. Promotes the use of @NotNull to perform
+ // null checking.
+ if (value == null) {
+ return true;
+ }
+
+ // All these values will be pre-validated with @NotNull constraints
+ // so they are safe to use
+ byte[] data = value.getData();
+ String fileName = value.getFileName();
+ ImageType type = value.getType();
+
+ // Verify the GIF type is correct, has the correct extension and
+ // the data header is either GIF87 or GIF89
+ if (allowedTypes.contains(ImageType.GIF) &&
+ type == ImageType.GIF &&
+ fileName.endsWith(".gif")) {
+ if (data != null && data.length >= 6) {
+ String gifHeader = new String(data, 0, 6);
+ if (gifHeader.equalsIgnoreCase("GIF87a") ||
+ gifHeader.equalsIgnoreCase("GIF89a")) {
+ return true;
+ }
+ }
+ }
+ // Verify the JPEG type is correct, has the correct extension and
+ // the data begins with SOI & ends with EOI markers
+ if (allowedTypes.contains(ImageType.JPEG) &&
+ value.getType() == ImageType.JPEG &&
+ (fileName.endsWith(".jpg") ||
+ fileName.endsWith(".jpeg"))) {
+ if (data.length >= 4 &&
+ data[0] == 0xff && data[1] == 0xd8 &&
+ data[data.length - 2] == 0xff &&
+ data[data.length - 1] == 0xd9) {
+ return true;
+ }
+ }
+ // Unknown file format
+ return false;
+ }
+}
Propchange:
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageValidator.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/SequencedImageGroup.java
URL:
http://svn.apache.org/viewvc/openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/SequencedImageGroup.java?rev=1475992&view=auto
==============================================================================
---
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/SequencedImageGroup.java
(added)
+++
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/SequencedImageGroup.java
Thu Apr 25 22:37:30 2013
@@ -0,0 +1,32 @@
+/*
+ * 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.apache.openjpa.example.gallery.constraint;
+
+import javax.validation.GroupSequence;
+import javax.validation.groups.Default;
+
+/**
+ * Sequenced validation group definition. When this validation group is
+ * used constraints within the Default group will validate first. If
+ * successful, constraints within the ImageGroup will validate next.
+ */
+@GroupSequence({Default.class, ImageGroup.class})
+public interface SequencedImageGroup {
+
+}
Propchange:
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/SequencedImageGroup.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Album.java
URL:
http://svn.apache.org/viewvc/openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Album.java?rev=1475992&view=auto
==============================================================================
---
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Album.java
(added)
+++
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Album.java
Thu Apr 25 22:37:30 2013
@@ -0,0 +1,81 @@
+/*
+ * 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.apache.openjpa.example.gallery.model;
+
+import java.util.List;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.OneToMany;
+import javax.persistence.ManyToMany;
+import javax.validation.constraints.NotNull;
+
+/**
+ * Album entity. Contains references to zero or more images and zero or more
+ * image creators/authors.
+ */
+@Entity
+public class Album {
+
+ @Id
+ @GeneratedValue
+ private long id;
+
+ @NotNull
+ private String name;
+
+ @OneToMany
+ private List<Image> images;
+
+ @ManyToMany
+ private List<Creator> creator;
+
+ public void setId(long id) {
+ this.id = id;
+ }
+
+ public long getId() {
+ return id;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setImages(List<Image> images) {
+ this.images = images;
+ }
+
+ public List<Image> getImages() {
+ return images;
+ }
+
+ public void setCreator(List<Creator> creator) {
+ this.creator = creator;
+ }
+
+ public List<Creator> getCreator() {
+ return creator;
+ }
+}
Propchange:
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Album.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Creator.java
URL:
http://svn.apache.org/viewvc/openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Creator.java?rev=1475992&view=auto
==============================================================================
---
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Creator.java
(added)
+++
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Creator.java
Thu Apr 25 22:37:30 2013
@@ -0,0 +1,94 @@
+/*
+ * 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.apache.openjpa.example.gallery.model;
+
+import java.util.List;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.ManyToMany;
+import javax.persistence.OneToMany;
+import javax.persistence.OrderBy;
+import javax.validation.constraints.NotNull;
+
+/**
+ * Creator entity. Contains a reference to one or more images authored by
+ * an instance of the creator.
+ */
+@Entity
+public class Creator {
+
+ @Id
+ @GeneratedValue
+ private long id;
+
+ @NotNull(message="Photographer's first name must be specified.")
+ private String firstName;
+
+ @NotNull(message="Photographer's last name must be specified.")
+ private String lastName;
+
+ @OneToMany
+ @OrderBy("fileName")
+ private List<Image> images;
+
+ @ManyToMany
+ private List<Album> albums;
+
+ public void setId(long id) {
+ this.id = id;
+ }
+
+ public long getId() {
+ return id;
+ }
+
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+
+ public String getFirstName() {
+ return firstName;
+ }
+
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+ public String getLastName() {
+ return lastName;
+ }
+
+ public void setImages(List<Image> images) {
+ this.images = images;
+ }
+
+ public List<Image> getImages() {
+ return images;
+ }
+
+ public List<Album> getAlbums() {
+ return albums;
+ }
+
+ public void setAlbums(List<Album> albums) {
+ this.albums = albums;
+ }
+}
Propchange:
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Creator.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Image.java
URL:
http://svn.apache.org/viewvc/openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Image.java?rev=1475992&view=auto
==============================================================================
---
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Image.java
(added)
+++
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Image.java
Thu Apr 25 22:37:30 2013
@@ -0,0 +1,105 @@
+/*
+ * 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.apache.openjpa.example.gallery.model;
+
+import javax.persistence.Embedded;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import javax.validation.Valid;
+import javax.validation.constraints.NotNull;
+
+import org.apache.openjpa.example.gallery.ImageType;
+import org.apache.openjpa.example.gallery.constraint.ImageConstraint;
+import org.apache.openjpa.example.gallery.constraint.ImageGroup;
+
+/**
+ * Image entity which makes use of several BV constraints.
+ */
+@Entity
+@ImageConstraint(groups=ImageGroup.class)
+public class Image {
+
+ private long id;
+ private ImageType type;
+ private String fileName;
+ private byte[] data;
+ private Location location;
+ private Creator creator;
+
+ @Id
+ @GeneratedValue
+ public long getId() {
+ return id;
+ }
+
+ public void setId(long id) {
+ this.id = id;
+ }
+
+ @NotNull(message="Image type must be specified.")
+ @Enumerated(EnumType.STRING)
+ public ImageType getType() {
+ return type;
+ }
+
+ public void setType(ImageType type) {
+ this.type = type;
+ }
+
+ @NotNull(message="Image file name must not be null.")
+ public String getFileName() {
+ return fileName;
+ }
+
+ public void setFileName(String fileName) {
+ this.fileName = fileName;
+ }
+
+ @NotNull(message="Image data must not be null.")
+ public byte[] getData() {
+ return data;
+ }
+
+ public void setData(byte[] data) {
+ this.data = data;
+ }
+
+ @Valid
+ @Embedded
+ public Location getLocation() {
+ return location;
+ }
+
+ public void setLocation(Location location) {
+ this.location = location;
+ }
+
+ @ManyToOne
+ public Creator getCreator() {
+ return creator;
+ }
+
+ public void setCreator(Creator creator) {
+ this.creator = creator;
+ }
+}
Propchange:
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Image.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Location.java
URL:
http://svn.apache.org/viewvc/openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Location.java?rev=1475992&view=auto
==============================================================================
---
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Location.java
(added)
+++
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Location.java
Thu Apr 25 22:37:30 2013
@@ -0,0 +1,91 @@
+/*
+ * 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.apache.openjpa.example.gallery.model;
+
+import javax.persistence.Column;
+import javax.persistence.Embeddable;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
+import javax.validation.constraints.Size;
+
+/**
+ * Location embeddable with several BV constraints applied.
+ */
+@Embeddable
+public class Location {
+
+ @NotNull(message="City must be specified.")
+ private String city;
+
+ private String street;
+
+ private String state;
+
+ @NotNull(message="Country must be specified.")
+ @Size(message="Country must be 50 characters or less.", max=50)
+ @Column(length=50)
+ private String country;
+
+ @Size(message="Zip code must be 10 characters or less.", max=10)
+ @Pattern(message="Zip code must be 5 digits or use the 5+4 format.",
+ regexp="^\\d{5}(([\\-]|[\\+])\\d{4})?$")
+ @Column(length=10)
+ private String zipCode;
+
+ public void setCity(String city) {
+ this.city = city;
+ }
+
+ public String getCity() {
+ return city;
+ }
+
+ public void setStreet(String street) {
+ this.street = street;
+ }
+
+ public String getStreet() {
+ return street;
+ }
+
+ public void setState(String state) {
+ this.state = state;
+ }
+
+ public String getState() {
+ return state;
+ }
+
+ public void setCountry(String country) {
+ this.country = country;
+ }
+
+ public String getCountry() {
+ return country;
+ }
+
+ public void setZipCode(String zipCode) {
+ this.zipCode = zipCode;
+ }
+
+ public String getZipCode() {
+ return zipCode;
+ }
+}
Propchange:
openjpa/branches/2.1.x/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Location.java
------------------------------------------------------------------------------
svn:eol-style = native