diff --git a/demo/README.html b/demo/README.html index 9af1d6628..4064c41ed 100644 --- a/demo/README.html +++ b/demo/README.html @@ -29,8 +29,8 @@

$ run admin_layer.fsh

The git patches need to be applied manually. Both the patches are located in the patches sub-directory. To apply the manual changes, first apply the patch located in file admin_layer_functional.patch. Then perform the same for the file admin_layer_graphics.patch if you want to apply the style changes for the generated administration site. You can do so in JBoss Developer Studio, by opening the context-menu on the project (Right-click on the project) and then apply a git patch via Team -> Apply Patch…. Locate the patch file in the Workspace, select it and click the ‘Next’ button. In the next dialog, select to apply the patch on the ‘ticket-monster’ project in the workspace. Click Finish in the final page of the wizard after satisfying that the patch applies cleanly.

-
  • Deployment to JBoss EAP 6.3 is optional. The project can be built and deployed to a running instance of JBoss EAP through the following command in JBoss Forge:

    -
    -

    If you want the test runner to start an application server instance, use the arq-jbossas-managed profile. You must set up the JBOSS_HOME property to point to the server location, or update the src/main/test/resources/arquillian.xml file.

    +

    If you want the test runner to start an application server instance, use the arq-managed profile. You must set up the JBOSS_HOME property to point to the server location, or update the src/main/test/resources/arquillian.xml file.

    mvn clean package -Parq-jbossas-managed
     

    Building TicketMonster with Postgresql (for OpenShift)

    @@ -61,11 +61,11 @@

    Running TicketMonster

    -

    You can run TicketMonster into a local JBoss EAP 6.3 instance or on OpenShift.

    +

    You can run TicketMonster into a local JBoss EAP 7.0 instance or on OpenShift.

    Running TicketMonster locally

    -

    Start JBoss Enterprise Application Platform 6.3

    +

    Start JBoss Enterprise Application Platform 7.0

    1. Open a command line and navigate to the root of the JBoss server directory.
    2. @@ -82,7 +82,7 @@

      Type this command to build and deploy the archive into a running server instance.

      mvn clean package jboss-as:deploy
       
      -

      (You can use the arq-jbossas-remote profile for running tests as well)

      +

      (You can use the arq-remote profile for running tests as well)

    3. This will deploy target/ticket-monster.war to the running instance of the server.

    4. Now you can see the application running at http://localhost:8080/ticket-monster

    diff --git a/demo/README.md b/demo/README.md index c08d50ec4..3ff09513a 100644 --- a/demo/README.md +++ b/demo/README.md @@ -29,9 +29,9 @@ Before building and running TicketMonster, you must generate the administration The git patches need to be applied manually. Both the patches are located in the patches sub-directory. To apply the manual changes, first apply the patch located in file _admin_layer_functional.patch_. Then perform the same for the file _admin_layer_graphics.patch_ if you want to apply the style changes for the generated administration site. You can do so in JBoss Developer Studio, by opening the context-menu on the project (Right-click on the project) and then apply a git patch via _Team_ -> _Apply Patch..._. Locate the patch file in the Workspace, select it and click the 'Next' button. In the next dialog, select to apply the patch on the 'ticket-monster' project in the workspace. Click Finish in the final page of the wizard after satisfying that the patch applies cleanly. -4. Deployment to JBoss EAP 6.3 is optional. The project can be built and deployed to a running instance of JBoss EAP through the following command in JBoss Forge: +4. Deployment to JBoss EAP 7.0 is optional. The project can be built and deployed to a running instance of JBoss EAP through the following command in JBoss Forge: - $ build clean package jboss-as:deploy + $ build clean package wildfly:deploy ## Building TicketMonster @@ -43,13 +43,13 @@ TicketMonster can be built from Maven, by runnning the following Maven command: If you want to run the Arquillian tests as part of the build, you can enable one of the two available Arquillian profiles. -For running the tests in an _already running_ application server instance, use the `arq-jbossas-remote` profile. +For running the tests in an _already running_ application server instance, use the `arq-remote` profile. - mvn clean package -Parq-jbossas-remote + mvn clean package -Parq-remote -If you want the test runner to _start_ an application server instance, use the `arq-jbossas-managed` profile. You must set up the `JBOSS_HOME` property to point to the server location, or update the `src/main/test/resources/arquillian.xml` file. +If you want the test runner to _start_ an application server instance, use the `arq-managed` profile. You must set up the `JBOSS_HOME` property to point to the server location, or update the `src/main/test/resources/arquillian.xml` file. - mvn clean package -Parq-jbossas-managed + mvn clean package -Parq-managed ### Building TicketMonster with Postgresql (for OpenShift) @@ -65,11 +65,11 @@ If you intend to deploy into [OpenShift](http://openshift.com), you can use the ## Running TicketMonster -You can run TicketMonster into a local JBoss EAP 6.3 instance or on OpenShift. +You can run TicketMonster into a local JBoss EAP 7.0 instance or on OpenShift. ### Running TicketMonster locally -#### Start JBoss Enterprise Application Platform 6.3 +#### Start JBoss Enterprise Application Platform 7.0 1. Open a command line and navigate to the root of the JBoss server directory. 2. The following shows the command line to start the server with the web profile: @@ -82,9 +82,9 @@ You can run TicketMonster into a local JBoss EAP 6.3 instance or on OpenShift. 1. Make sure you have started the JBoss Server as described above. 2. Type this command to build and deploy the archive into a running server instance. - mvn clean package jboss-as:deploy + mvn clean package wildfly:deploy - (You can use the `arq-jbossas-remote` profile for running tests as well) + (You can use the `arq-remote` profile for running tests as well) 3. This will deploy `target/ticket-monster.war` to the running instance of the server. 4. Now you can see the application running at `http://localhost:8080/ticket-monster` diff --git a/demo/admin_layer.fsh b/demo/admin_layer.fsh index 51b769fea..a4dfad6f0 100644 --- a/demo/admin_layer.fsh +++ b/demo/admin_layer.fsh @@ -6,6 +6,6 @@ scaffold-generate --provider AngularJS --webRoot /admin --targets org.jboss.exam echo "Don't forget to apply the manual changes described in tutorial provided in admin_layer_functional.patch and admin_layer_graphics.patch. Both files are in the patches sub-directory."; echo "To build and deploy the application to JBoss EAP, run the following command:" -echo " build clean package jboss-as:deploy"; +echo " build clean package wildfly:deploy"; echo "Examine the app deployed at http://localhost:8080/ticket-monster/admin/index.html"; diff --git a/demo/pom.xml b/demo/pom.xml index 8c4bd0b49..6d923de2a 100644 --- a/demo/pom.xml +++ b/demo/pom.xml @@ -1,9 +1,14 @@ 4.0.0 + + org.jboss + jboss-parent + 22 + org.jboss.examples ticket-monster - 2.7.0.Final + 3.0.0.Final-SNAPSHOT war ticket-monster A starter HTML5 + REST webapp project for use on JBoss EAP. @@ -21,27 +26,27 @@ --> - redhat-techpreview-all-repository - https://maven.repository.redhat.com/techpreview/all/ true false + jboss-enterprise-maven-repository + https://maven.repository.redhat.com/ga/ - redhat-techpreview-all-repository - https://maven.repository.redhat.com/techpreview/all/ true false + jboss-enterprise-maven-repository + https://maven.repository.redhat.com/ga/ @@ -58,47 +63,27 @@ ${env.JBOSS_HOME} - - - - 6.3.2.GA - 2.7.0-redhat-1 - 1.7 + 7.0.4.GA - + versions of artifacts. Here we use the jboss-javaee-7.0-with-tools stack + (you can read this as the JBoss stack of the Java EE 7 APIs, with some extras + tools for your project, such as Arquillian for testing), + --> - org.jboss.bom.wfk - jboss-javaee-6.0-with-tools - ${version.jboss.bom.wfk} - pom - import - - - org.jboss.bom.eap - jboss-javaee-6.0-with-hibernate - ${version.jboss.bom.eap} - pom - import - - - org.jboss.bom.eap - jboss-javaee-6.0-with-resteasy + org.jboss.bom + jboss-eap-javaee7-with-tools ${version.jboss.bom.eap} pom import @@ -135,15 +120,16 @@ scope as the API is included in JBoss EAP --> org.jboss.spec.javax.annotation - jboss-annotations-api_1.1_spec + jboss-annotations-api_1.2_spec provided + org.jboss.spec.javax.ws.rs - jboss-jaxrs-api_1.1_spec + jboss-jaxrs-api_2.0_spec provided @@ -151,7 +137,7 @@ in JBoss EAP --> org.hibernate.javax.persistence - hibernate-jpa-2.0-api + hibernate-jpa-2.1-api provided @@ -159,7 +145,7 @@ in JBoss EAP --> org.jboss.spec.javax.ejb - jboss-ejb-api_3.1_spec + jboss-ejb-api_3.2_spec provided @@ -167,7 +153,7 @@ included in JBoss EAP --> org.jboss.spec.javax.servlet - jboss-servlet-api_3.0_spec + jboss-servlet-api_3.1_spec provided @@ -230,7 +216,7 @@ fine tuning the content of the JSON responses --> org.jboss.resteasy - resteasy-jackson-provider + resteasy-jackson2-provider provided @@ -248,19 +234,10 @@ - - - maven-compiler-plugin - 2.3.1 - - 1.6 - 1.6 - - + org.apache.maven.plugins maven-war-plugin - 2.1.1 + ${version.war.plugin} false @@ -272,11 +249,11 @@ - + - org.jboss.as.plugins - jboss-as-maven-plugin - 7.4.Final + org.wildfly.plugins + wildfly-maven-plugin + 1.0.2.Final @@ -296,8 +273,9 @@ + org.apache.maven.plugins maven-surefire-plugin - 2.4.3 + ${version.surefire.plugin} true @@ -312,12 +290,12 @@ in your JBoss AS instance --> - - arq-jbossas-managed + + arq-managed - org.jboss.as - jboss-as-arquillian-container-managed + org.wildfly.arquillian + wildfly-arquillian-container-managed test @@ -325,13 +303,13 @@ - - arq-jbossas-remote + in a remote Server instance --> + + arq-remote - org.jboss.as - jboss-as-arquillian-container-remote + org.wildfly.arquillian + wildfly-arquillian-container-remote test @@ -358,8 +336,9 @@ + org.apache.maven.plugins maven-surefire-plugin - 2.4.3 + ${version.surefire.plugin} true @@ -389,8 +368,9 @@ + org.apache.maven.plugins maven-surefire-plugin - 2.4.3 + ${version.surefire.plugin} true @@ -419,8 +399,9 @@ + org.apache.maven.plugins maven-surefire-plugin - 2.4.3 + ${version.surefire.plugin} true @@ -449,8 +430,9 @@ + org.apache.maven.plugins maven-surefire-plugin - 2.4.3 + ${version.surefire.plugin} true @@ -490,25 +472,27 @@ - + - - - - - openshift - - - - maven-war-plugin - - deployments - ROOT - - - - - + + + + + openshift + + + + org.apache.maven.plugins + maven-war-plugin + ${version.war.plugin} + + deployments + ROOT + + + + + diff --git a/demo/src/main/java/org/jboss/examples/ticketmonster/model/Performance.java b/demo/src/main/java/org/jboss/examples/ticketmonster/model/Performance.java index 33db3914f..5a22e9e40 100644 --- a/demo/src/main/java/org/jboss/examples/ticketmonster/model/Performance.java +++ b/demo/src/main/java/org/jboss/examples/ticketmonster/model/Performance.java @@ -15,7 +15,8 @@ import javax.persistence.UniqueConstraint; import javax.validation.constraints.NotNull; -import org.codehaus.jackson.annotate.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + /** *

    diff --git a/demo/src/main/java/org/jboss/examples/ticketmonster/model/Section.java b/demo/src/main/java/org/jboss/examples/ticketmonster/model/Section.java index b66edce5f..25da2cf2a 100644 --- a/demo/src/main/java/org/jboss/examples/ticketmonster/model/Section.java +++ b/demo/src/main/java/org/jboss/examples/ticketmonster/model/Section.java @@ -12,7 +12,7 @@ import javax.persistence.UniqueConstraint; import javax.validation.constraints.NotNull; -import org.codehaus.jackson.annotate.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import org.hibernate.validator.constraints.NotEmpty; /** diff --git a/demo/src/main/java/org/jboss/examples/ticketmonster/model/TicketPrice.java b/demo/src/main/java/org/jboss/examples/ticketmonster/model/TicketPrice.java index b669d04fb..bc5b5f08b 100644 --- a/demo/src/main/java/org/jboss/examples/ticketmonster/model/TicketPrice.java +++ b/demo/src/main/java/org/jboss/examples/ticketmonster/model/TicketPrice.java @@ -12,7 +12,8 @@ import javax.persistence.UniqueConstraint; import javax.validation.constraints.NotNull; -import org.codehaus.jackson.annotate.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + /** *

    diff --git a/demo/src/main/java/org/jboss/examples/ticketmonster/rest/BookingService.java b/demo/src/main/java/org/jboss/examples/ticketmonster/rest/BookingService.java index 3e8ab199d..d6e1336b7 100644 --- a/demo/src/main/java/org/jboss/examples/ticketmonster/rest/BookingService.java +++ b/demo/src/main/java/org/jboss/examples/ticketmonster/rest/BookingService.java @@ -19,6 +19,7 @@ import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.MultivaluedHashMap; import javax.ws.rs.core.Response; import org.jboss.examples.ticketmonster.model.Booking; @@ -30,7 +31,6 @@ import org.jboss.examples.ticketmonster.model.TicketPrice; import org.jboss.examples.ticketmonster.service.AllocatedSeats; import org.jboss.examples.ticketmonster.service.SeatAllocationService; -import org.jboss.examples.ticketmonster.util.MultivaluedHashMap; import org.jboss.examples.ticketmonster.util.qualifier.Cancelled; import org.jboss.examples.ticketmonster.util.qualifier.Created; diff --git a/demo/src/main/java/org/jboss/examples/ticketmonster/service/Bot.java b/demo/src/main/java/org/jboss/examples/ticketmonster/service/Bot.java index 195956b87..9c6555c15 100644 --- a/demo/src/main/java/org/jboss/examples/ticketmonster/service/Bot.java +++ b/demo/src/main/java/org/jboss/examples/ticketmonster/service/Bot.java @@ -16,13 +16,13 @@ import javax.ejb.TimerService; import javax.enterprise.event.Event; import javax.inject.Inject; +import javax.ws.rs.core.MultivaluedHashMap; import javax.ws.rs.core.Response; import org.jboss.examples.ticketmonster.model.Performance; import org.jboss.examples.ticketmonster.model.Show; import org.jboss.examples.ticketmonster.model.TicketPrice; import org.jboss.examples.ticketmonster.rest.*; -import org.jboss.examples.ticketmonster.util.MultivaluedHashMap; import org.jboss.examples.ticketmonster.util.qualifier.BotMessage; @Stateless @@ -72,7 +72,7 @@ public void stop(Timer timer) { @Timeout public void book(Timer timer) { // Select a show at random - Show show = selectAtRandom(showService.getAll(MultivaluedHashMap.empty())); + Show show = selectAtRandom(showService.getAll(new MultivaluedHashMap<>())); // Select a performance at random Performance performance = selectAtRandom(show.getPerformances()); diff --git a/demo/src/main/java/org/jboss/examples/ticketmonster/service/BotService.java b/demo/src/main/java/org/jboss/examples/ticketmonster/service/BotService.java index 1d8d2bcbe..86d212c3a 100644 --- a/demo/src/main/java/org/jboss/examples/ticketmonster/service/BotService.java +++ b/demo/src/main/java/org/jboss/examples/ticketmonster/service/BotService.java @@ -9,11 +9,11 @@ import javax.enterprise.event.Event; import javax.enterprise.event.Observes; import javax.inject.Inject; +import javax.ws.rs.core.MultivaluedHashMap; import org.jboss.examples.ticketmonster.model.Booking; import org.jboss.examples.ticketmonster.rest.BookingService; import org.jboss.examples.ticketmonster.util.CircularBuffer; -import org.jboss.examples.ticketmonster.util.MultivaluedHashMap; import org.jboss.examples.ticketmonster.util.qualifier.BotMessage; /** diff --git a/demo/src/main/java/org/jboss/examples/ticketmonster/service/MediaManager.java b/demo/src/main/java/org/jboss/examples/ticketmonster/service/MediaManager.java index b16e936dd..d44811d14 100644 --- a/demo/src/main/java/org/jboss/examples/ticketmonster/service/MediaManager.java +++ b/demo/src/main/java/org/jboss/examples/ticketmonster/service/MediaManager.java @@ -14,6 +14,7 @@ import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; +import java.util.Base64; import java.util.HashMap; import java.util.Map; @@ -21,7 +22,6 @@ import org.jboss.examples.ticketmonster.model.MediaItem; import org.jboss.examples.ticketmonster.model.MediaType; -import org.jboss.examples.ticketmonster.util.Base64; import org.jboss.examples.ticketmonster.util.Reflections; /** @@ -144,7 +144,7 @@ private boolean checkResourceAvailable(MediaItem mediaItem) { * files. */ private String getCachedFileName(String url) { - return Base64.encodeToString(url.getBytes(), false); + return Base64.getEncoder().encodeToString(url.getBytes()); } /** diff --git a/demo/src/main/java/org/jboss/examples/ticketmonster/util/Base64.java b/demo/src/main/java/org/jboss/examples/ticketmonster/util/Base64.java deleted file mode 100644 index 4b4f1fea7..000000000 --- a/demo/src/main/java/org/jboss/examples/ticketmonster/util/Base64.java +++ /dev/null @@ -1,575 +0,0 @@ -package org.jboss.examples.ticketmonster.util; - -import java.util.Arrays; - -/** A very fast and memory efficient class to encode and decode to and from BASE64 in full accordance - * with RFC 2045.

    - * On Windows XP sp1 with 1.4.2_04 and later ;), this encoder and decoder is about 10 times faster - * on small arrays (10 - 1000 bytes) and 2-3 times as fast on larger arrays (10000 - 1000000 bytes) - * compared to sun.misc.Encoder()/Decoder().

    - * - * On byte arrays the encoder is about 20% faster than Jakarta Commons Base64 Codec for encode and - * about 50% faster for decoding large arrays. This implementation is about twice as fast on very small - * arrays (< 30 bytes). If source/destination is a String this - * version is about three times as fast due to the fact that the Commons Codec result has to be recoded - * to a String from byte[], which is very expensive.

    - * - * This encode/decode algorithm doesn't create any temporary arrays as many other codecs do, it only - * allocates the resulting array. This produces less garbage and it is possible to handle arrays twice - * as large as algorithms that create a temporary array. (E.g. Jakarta Commons Codec). It is unknown - * whether Sun's sun.misc.Encoder()/Decoder() produce temporary arrays but since performance - * is quite low it probably does.

    - * - * The encoder produces the same output as the Sun one except that the Sun's encoder appends - * a trailing line separator if the last character isn't a pad. Unclear why but it only adds to the - * length and is probably a side effect. Both are in conformance with RFC 2045 though.
    - * Commons codec seem to always att a trailing line separator.

    - * - * Note! - * The encode/decode method pairs (types) come in three versions with the exact same algorithm and - * thus a lot of code redundancy. This is to not create any temporary arrays for transcoding to/from different - * format types. The methods not used can simply be commented out.

    - * - * There is also a "fast" version of all decode methods that works the same way as the normal ones, but - * har a few demands on the decoded input. Normally though, these fast verions should be used if the source if - * the input is known and it hasn't bee tampered with.

    - * - * If you find the code useful or you find a bug, please send me a note at base64 @ miginfocom . com. - * - * Licence (BSD): - * ============== - * - * Copyright (c) 2004, Mikael Grev, MiG InfoCom AB. (base64 @ miginfocom . com) - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this list - * of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, this - * list of conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * Neither the name of the MiG InfoCom AB nor the names of its contributors may be - * used to endorse or promote products derived from this software without specific - * prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * @version 2.2 - * @author Mikael Grev - * Date: 2004-aug-02 - * Time: 11:31:11 - */ - -public class Base64 -{ - private static final char[] CA = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".toCharArray(); - private static final int[] IA = new int[256]; - static { - Arrays.fill(IA, -1); - for (int i = 0, iS = CA.length; i < iS; i++) - IA[CA[i]] = i; - IA['='] = 0; - } - - // **************************************************************************************** - // * char[] version - // **************************************************************************************** - - /** Encodes a raw byte array into a BASE64 char[] representation i accordance with RFC 2045. - * @param sArr The bytes to convert. If null or length 0 an empty array will be returned. - * @param lineSep Optional "\r\n" after 76 characters, unless end of file.
    - * No line separator will be in breach of RFC 2045 which specifies max 76 per line but will be a - * little faster. - * @return A BASE64 encoded array. Never null. - */ - public final static char[] encodeToChar(byte[] sArr, boolean lineSep) - { - // Check special case - int sLen = sArr != null ? sArr.length : 0; - if (sLen == 0) - return new char[0]; - - int eLen = (sLen / 3) * 3; // Length of even 24-bits. - int cCnt = ((sLen - 1) / 3 + 1) << 2; // Returned character count - int dLen = cCnt + (lineSep ? (cCnt - 1) / 76 << 1 : 0); // Length of returned array - char[] dArr = new char[dLen]; - - // Encode even 24-bits - for (int s = 0, d = 0, cc = 0; s < eLen;) { - // Copy next three bytes into lower 24 bits of int, paying attension to sign. - int i = (sArr[s++] & 0xff) << 16 | (sArr[s++] & 0xff) << 8 | (sArr[s++] & 0xff); - - // Encode the int into four chars - dArr[d++] = CA[(i >>> 18) & 0x3f]; - dArr[d++] = CA[(i >>> 12) & 0x3f]; - dArr[d++] = CA[(i >>> 6) & 0x3f]; - dArr[d++] = CA[i & 0x3f]; - - // Add optional line separator - if (lineSep && ++cc == 19 && d < dLen - 2) { - dArr[d++] = '\r'; - dArr[d++] = '\n'; - cc = 0; - } - } - - // Pad and encode last bits if source isn't even 24 bits. - int left = sLen - eLen; // 0 - 2. - if (left > 0) { - // Prepare the int - int i = ((sArr[eLen] & 0xff) << 10) | (left == 2 ? ((sArr[sLen - 1] & 0xff) << 2) : 0); - - // Set last four chars - dArr[dLen - 4] = CA[i >> 12]; - dArr[dLen - 3] = CA[(i >>> 6) & 0x3f]; - dArr[dLen - 2] = left == 2 ? CA[i & 0x3f] : '='; - dArr[dLen - 1] = '='; - } - return dArr; - } - - /** Decodes a BASE64 encoded char array. All illegal characters will be ignored and can handle both arrays with - * and without line separators. - * @param sArr The source array. null or length 0 will return an empty array. - * @return The decoded array of bytes. May be of length 0. Will be null if the legal characters - * (including '=') isn't divideable by 4. (I.e. definitely corrupted). - */ - public final static byte[] decode(char[] sArr) - { - // Check special case - int sLen = sArr != null ? sArr.length : 0; - if (sLen == 0) - return new byte[0]; - - // Count illegal characters (including '\r', '\n') to know what size the returned array will be, - // so we don't have to reallocate & copy it later. - int sepCnt = 0; // Number of separator characters. (Actually illegal characters, but that's a bonus...) - for (int i = 0; i < sLen; i++) // If input is "pure" (I.e. no line separators or illegal chars) base64 this loop can be commented out. - if (IA[sArr[i]] < 0) - sepCnt++; - - // Check so that legal chars (including '=') are evenly divideable by 4 as specified in RFC 2045. - if ((sLen - sepCnt) % 4 != 0) - return null; - - int pad = 0; - for (int i = sLen; i > 1 && IA[sArr[--i]] <= 0;) - if (sArr[i] == '=') - pad++; - - int len = ((sLen - sepCnt) * 6 >> 3) - pad; - - byte[] dArr = new byte[len]; // Preallocate byte[] of exact length - - for (int s = 0, d = 0; d < len;) { - // Assemble three bytes into an int from four "valid" characters. - int i = 0; - for (int j = 0; j < 4; j++) { // j only increased if a valid char was found. - int c = IA[sArr[s++]]; - if (c >= 0) - i |= c << (18 - j * 6); - else - j--; - } - // Add the bytes - dArr[d++] = (byte) (i >> 16); - if (d < len) { - dArr[d++]= (byte) (i >> 8); - if (d < len) - dArr[d++] = (byte) i; - } - } - return dArr; - } - - /** Decodes a BASE64 encoded char array that is known to be resonably well formatted. The method is about twice as - * fast as {@link #decode(char[])}. The preconditions are:
    - * + The array must have a line length of 76 chars OR no line separators at all (one line).
    - * + Line separator must be "\r\n", as specified in RFC 2045 - * + The array must not contain illegal characters within the encoded string
    - * + The array CAN have illegal characters at the beginning and end, those will be dealt with appropriately.
    - * @param sArr The source array. Length 0 will return an empty array. null will throw an exception. - * @return The decoded array of bytes. May be of length 0. - */ - public final static byte[] decodeFast(char[] sArr) - { - // Check special case - int sLen = sArr.length; - if (sLen == 0) - return new byte[0]; - - int sIx = 0, eIx = sLen - 1; // Start and end index after trimming. - - // Trim illegal chars from start - while (sIx < eIx && IA[sArr[sIx]] < 0) - sIx++; - - // Trim illegal chars from end - while (eIx > 0 && IA[sArr[eIx]] < 0) - eIx--; - - // get the padding count (=) (0, 1 or 2) - int pad = sArr[eIx] == '=' ? (sArr[eIx - 1] == '=' ? 2 : 1) : 0; // Count '=' at end. - int cCnt = eIx - sIx + 1; // Content count including possible separators - int sepCnt = sLen > 76 ? (sArr[76] == '\r' ? cCnt / 78 : 0) << 1 : 0; - - int len = ((cCnt - sepCnt) * 6 >> 3) - pad; // The number of decoded bytes - byte[] dArr = new byte[len]; // Preallocate byte[] of exact length - - // Decode all but the last 0 - 2 bytes. - int d = 0; - for (int cc = 0, eLen = (len / 3) * 3; d < eLen;) { - // Assemble three bytes into an int from four "valid" characters. - int i = IA[sArr[sIx++]] << 18 | IA[sArr[sIx++]] << 12 | IA[sArr[sIx++]] << 6 | IA[sArr[sIx++]]; - - // Add the bytes - dArr[d++] = (byte) (i >> 16); - dArr[d++] = (byte) (i >> 8); - dArr[d++] = (byte) i; - - // If line separator, jump over it. - if (sepCnt > 0 && ++cc == 19) { - sIx += 2; - cc = 0; - } - } - - if (d < len) { - // Decode last 1-3 bytes (incl '=') into 1-3 bytes - int i = 0; - for (int j = 0; sIx <= eIx - pad; j++) - i |= IA[sArr[sIx++]] << (18 - j * 6); - - for (int r = 16; d < len; r -= 8) - dArr[d++] = (byte) (i >> r); - } - - return dArr; - } - - // **************************************************************************************** - // * byte[] version - // **************************************************************************************** - - /** Encodes a raw byte array into a BASE64 byte[] representation i accordance with RFC 2045. - * @param sArr The bytes to convert. If null or length 0 an empty array will be returned. - * @param lineSep Optional "\r\n" after 76 characters, unless end of file.
    - * No line separator will be in breach of RFC 2045 which specifies max 76 per line but will be a - * little faster. - * @return A BASE64 encoded array. Never null. - */ - public final static byte[] encodeToByte(byte[] sArr, boolean lineSep) - { - // Check special case - int sLen = sArr != null ? sArr.length : 0; - if (sLen == 0) - return new byte[0]; - - int eLen = (sLen / 3) * 3; // Length of even 24-bits. - int cCnt = ((sLen - 1) / 3 + 1) << 2; // Returned character count - int dLen = cCnt + (lineSep ? (cCnt - 1) / 76 << 1 : 0); // Length of returned array - byte[] dArr = new byte[dLen]; - - // Encode even 24-bits - for (int s = 0, d = 0, cc = 0; s < eLen;) { - // Copy next three bytes into lower 24 bits of int, paying attension to sign. - int i = (sArr[s++] & 0xff) << 16 | (sArr[s++] & 0xff) << 8 | (sArr[s++] & 0xff); - - // Encode the int into four chars - dArr[d++] = (byte) CA[(i >>> 18) & 0x3f]; - dArr[d++] = (byte) CA[(i >>> 12) & 0x3f]; - dArr[d++] = (byte) CA[(i >>> 6) & 0x3f]; - dArr[d++] = (byte) CA[i & 0x3f]; - - // Add optional line separator - if (lineSep && ++cc == 19 && d < dLen - 2) { - dArr[d++] = '\r'; - dArr[d++] = '\n'; - cc = 0; - } - } - - // Pad and encode last bits if source isn't an even 24 bits. - int left = sLen - eLen; // 0 - 2. - if (left > 0) { - // Prepare the int - int i = ((sArr[eLen] & 0xff) << 10) | (left == 2 ? ((sArr[sLen - 1] & 0xff) << 2) : 0); - - // Set last four chars - dArr[dLen - 4] = (byte) CA[i >> 12]; - dArr[dLen - 3] = (byte) CA[(i >>> 6) & 0x3f]; - dArr[dLen - 2] = left == 2 ? (byte) CA[i & 0x3f] : (byte) '='; - dArr[dLen - 1] = '='; - } - return dArr; - } - - /** Decodes a BASE64 encoded byte array. All illegal characters will be ignored and can handle both arrays with - * and without line separators. - * @param sArr The source array. Length 0 will return an empty array. null will throw an exception. - * @return The decoded array of bytes. May be of length 0. Will be null if the legal characters - * (including '=') isn't divideable by 4. (I.e. definitely corrupted). - */ - public final static byte[] decode(byte[] sArr) - { - // Check special case - int sLen = sArr.length; - - // Count illegal characters (including '\r', '\n') to know what size the returned array will be, - // so we don't have to reallocate & copy it later. - int sepCnt = 0; // Number of separator characters. (Actually illegal characters, but that's a bonus...) - for (int i = 0; i < sLen; i++) // If input is "pure" (I.e. no line separators or illegal chars) base64 this loop can be commented out. - if (IA[sArr[i] & 0xff] < 0) - sepCnt++; - - // Check so that legal chars (including '=') are evenly divideable by 4 as specified in RFC 2045. - if ((sLen - sepCnt) % 4 != 0) - return null; - - int pad = 0; - for (int i = sLen; i > 1 && IA[sArr[--i] & 0xff] <= 0;) - if (sArr[i] == '=') - pad++; - - int len = ((sLen - sepCnt) * 6 >> 3) - pad; - - byte[] dArr = new byte[len]; // Preallocate byte[] of exact length - - for (int s = 0, d = 0; d < len;) { - // Assemble three bytes into an int from four "valid" characters. - int i = 0; - for (int j = 0; j < 4; j++) { // j only increased if a valid char was found. - int c = IA[sArr[s++] & 0xff]; - if (c >= 0) - i |= c << (18 - j * 6); - else - j--; - } - - // Add the bytes - dArr[d++] = (byte) (i >> 16); - if (d < len) { - dArr[d++]= (byte) (i >> 8); - if (d < len) - dArr[d++] = (byte) i; - } - } - - return dArr; - } - - - /** Decodes a BASE64 encoded byte array that is known to be resonably well formatted. The method is about twice as - * fast as {@link #decode(byte[])}. The preconditions are:
    - * + The array must have a line length of 76 chars OR no line separators at all (one line).
    - * + Line separator must be "\r\n", as specified in RFC 2045 - * + The array must not contain illegal characters within the encoded string
    - * + The array CAN have illegal characters at the beginning and end, those will be dealt with appropriately.
    - * @param sArr The source array. Length 0 will return an empty array. null will throw an exception. - * @return The decoded array of bytes. May be of length 0. - */ - public final static byte[] decodeFast(byte[] sArr) - { - // Check special case - int sLen = sArr.length; - if (sLen == 0) - return new byte[0]; - - int sIx = 0, eIx = sLen - 1; // Start and end index after trimming. - - // Trim illegal chars from start - while (sIx < eIx && IA[sArr[sIx] & 0xff] < 0) - sIx++; - - // Trim illegal chars from end - while (eIx > 0 && IA[sArr[eIx] & 0xff] < 0) - eIx--; - - // get the padding count (=) (0, 1 or 2) - int pad = sArr[eIx] == '=' ? (sArr[eIx - 1] == '=' ? 2 : 1) : 0; // Count '=' at end. - int cCnt = eIx - sIx + 1; // Content count including possible separators - int sepCnt = sLen > 76 ? (sArr[76] == '\r' ? cCnt / 78 : 0) << 1 : 0; - - int len = ((cCnt - sepCnt) * 6 >> 3) - pad; // The number of decoded bytes - byte[] dArr = new byte[len]; // Preallocate byte[] of exact length - - // Decode all but the last 0 - 2 bytes. - int d = 0; - for (int cc = 0, eLen = (len / 3) * 3; d < eLen;) { - // Assemble three bytes into an int from four "valid" characters. - int i = IA[sArr[sIx++]] << 18 | IA[sArr[sIx++]] << 12 | IA[sArr[sIx++]] << 6 | IA[sArr[sIx++]]; - - // Add the bytes - dArr[d++] = (byte) (i >> 16); - dArr[d++] = (byte) (i >> 8); - dArr[d++] = (byte) i; - - // If line separator, jump over it. - if (sepCnt > 0 && ++cc == 19) { - sIx += 2; - cc = 0; - } - } - - if (d < len) { - // Decode last 1-3 bytes (incl '=') into 1-3 bytes - int i = 0; - for (int j = 0; sIx <= eIx - pad; j++) - i |= IA[sArr[sIx++]] << (18 - j * 6); - - for (int r = 16; d < len; r -= 8) - dArr[d++] = (byte) (i >> r); - } - - return dArr; - } - - // **************************************************************************************** - // * String version - // **************************************************************************************** - - /** Encodes a raw byte array into a BASE64 String representation i accordance with RFC 2045. - * @param sArr The bytes to convert. If null or length 0 an empty array will be returned. - * @param lineSep Optional "\r\n" after 76 characters, unless end of file.
    - * No line separator will be in breach of RFC 2045 which specifies max 76 per line but will be a - * little faster. - * @return A BASE64 encoded array. Never null. - */ - public final static String encodeToString(byte[] sArr, boolean lineSep) - { - // Reuse char[] since we can't create a String incrementally anyway and StringBuffer/Builder would be slower. - return new String(encodeToChar(sArr, lineSep)); - } - - /** Decodes a BASE64 encoded String. All illegal characters will be ignored and can handle both strings with - * and without line separators.
    - * Note! It can be up to about 2x the speed to call decode(str.toCharArray()) instead. That - * will create a temporary array though. This version will use str.charAt(i) to iterate the string. - * @param str The source string. null or length 0 will return an empty array. - * @return The decoded array of bytes. May be of length 0. Will be null if the legal characters - * (including '=') isn't divideable by 4. (I.e. definitely corrupted). - */ - public final static byte[] decode(String str) - { - // Check special case - int sLen = str != null ? str.length() : 0; - if (sLen == 0) - return new byte[0]; - - // Count illegal characters (including '\r', '\n') to know what size the returned array will be, - // so we don't have to reallocate & copy it later. - int sepCnt = 0; // Number of separator characters. (Actually illegal characters, but that's a bonus...) - for (int i = 0; i < sLen; i++) // If input is "pure" (I.e. no line separators or illegal chars) base64 this loop can be commented out. - if (IA[str.charAt(i)] < 0) - sepCnt++; - - // Check so that legal chars (including '=') are evenly divideable by 4 as specified in RFC 2045. - if ((sLen - sepCnt) % 4 != 0) - return null; - - // Count '=' at end - int pad = 0; - for (int i = sLen; i > 1 && IA[str.charAt(--i)] <= 0;) - if (str.charAt(i) == '=') - pad++; - - int len = ((sLen - sepCnt) * 6 >> 3) - pad; - - byte[] dArr = new byte[len]; // Preallocate byte[] of exact length - - for (int s = 0, d = 0; d < len;) { - // Assemble three bytes into an int from four "valid" characters. - int i = 0; - for (int j = 0; j < 4; j++) { // j only increased if a valid char was found. - int c = IA[str.charAt(s++)]; - if (c >= 0) - i |= c << (18 - j * 6); - else - j--; - } - // Add the bytes - dArr[d++] = (byte) (i >> 16); - if (d < len) { - dArr[d++]= (byte) (i >> 8); - if (d < len) - dArr[d++] = (byte) i; - } - } - return dArr; - } - - /** Decodes a BASE64 encoded string that is known to be resonably well formatted. The method is about twice as - * fast as {@link #decode(String)}. The preconditions are:
    - * + The array must have a line length of 76 chars OR no line separators at all (one line).
    - * + Line separator must be "\r\n", as specified in RFC 2045 - * + The array must not contain illegal characters within the encoded string
    - * + The array CAN have illegal characters at the beginning and end, those will be dealt with appropriately.
    - * @param s The source string. Length 0 will return an empty array. null will throw an exception. - * @return The decoded array of bytes. May be of length 0. - */ - public final static byte[] decodeFast(String s) - { - // Check special case - int sLen = s.length(); - if (sLen == 0) - return new byte[0]; - - int sIx = 0, eIx = sLen - 1; // Start and end index after trimming. - - // Trim illegal chars from start - while (sIx < eIx && IA[s.charAt(sIx) & 0xff] < 0) - sIx++; - - // Trim illegal chars from end - while (eIx > 0 && IA[s.charAt(eIx) & 0xff] < 0) - eIx--; - - // get the padding count (=) (0, 1 or 2) - int pad = s.charAt(eIx) == '=' ? (s.charAt(eIx - 1) == '=' ? 2 : 1) : 0; // Count '=' at end. - int cCnt = eIx - sIx + 1; // Content count including possible separators - int sepCnt = sLen > 76 ? (s.charAt(76) == '\r' ? cCnt / 78 : 0) << 1 : 0; - - int len = ((cCnt - sepCnt) * 6 >> 3) - pad; // The number of decoded bytes - byte[] dArr = new byte[len]; // Preallocate byte[] of exact length - - // Decode all but the last 0 - 2 bytes. - int d = 0; - for (int cc = 0, eLen = (len / 3) * 3; d < eLen;) { - // Assemble three bytes into an int from four "valid" characters. - int i = IA[s.charAt(sIx++)] << 18 | IA[s.charAt(sIx++)] << 12 | IA[s.charAt(sIx++)] << 6 | IA[s.charAt(sIx++)]; - - // Add the bytes - dArr[d++] = (byte) (i >> 16); - dArr[d++] = (byte) (i >> 8); - dArr[d++] = (byte) i; - - // If line separator, jump over it. - if (sepCnt > 0 && ++cc == 19) { - sIx += 2; - cc = 0; - } - } - - if (d < len) { - // Decode last 1-3 bytes (incl '=') into 1-3 bytes - int i = 0; - for (int j = 0; sIx <= eIx - pad; j++) - i |= IA[s.charAt(sIx++)] << (18 - j * 6); - - for (int r = 16; d < len; r -= 8) - dArr[d++] = (byte) (i >> r); - } - - return dArr; - } -} diff --git a/demo/src/main/java/org/jboss/examples/ticketmonster/util/ForwardingMap.java b/demo/src/main/java/org/jboss/examples/ticketmonster/util/ForwardingMap.java deleted file mode 100644 index fb4a3432d..000000000 --- a/demo/src/main/java/org/jboss/examples/ticketmonster/util/ForwardingMap.java +++ /dev/null @@ -1,85 +0,0 @@ -package org.jboss.examples.ticketmonster.util; - -import java.util.Collection; -import java.util.Map; -import java.util.Set; - -public abstract class ForwardingMap implements Map { - - protected abstract Map delegate(); - - @Override - public void clear() { - delegate().clear(); - } - - @Override - public boolean containsKey(Object key) { - return delegate().containsKey(key); - } - - @Override - public boolean containsValue(Object value) { - return delegate().containsValue(value); - } - - @Override - public Set> entrySet() { - return delegate().entrySet(); - } - - @Override - public V get(Object key) { - return delegate().get(key); - } - - @Override - public boolean isEmpty() { - return delegate().isEmpty(); - } - - @Override - public Set keySet() { - return delegate().keySet(); - } - - @Override - public V put(K key, V value) { - return delegate().put(key, value); - } - - @Override - public void putAll(Map m) { - delegate().putAll(m); - } - - @Override - public V remove(Object key) { - return delegate().remove(key); - } - - @Override - public int size() { - return delegate().size(); - } - - @Override - public Collection values() { - return delegate().values(); - } - - @Override - public boolean equals(Object obj) { - return delegate().equals(obj); - } - - @Override - public int hashCode() { - return delegate().hashCode(); - } - - public String toString() { - return delegate().toString(); - } - -} diff --git a/demo/src/main/java/org/jboss/examples/ticketmonster/util/MultivaluedHashMap.java b/demo/src/main/java/org/jboss/examples/ticketmonster/util/MultivaluedHashMap.java deleted file mode 100644 index 23b686dfa..000000000 --- a/demo/src/main/java/org/jboss/examples/ticketmonster/util/MultivaluedHashMap.java +++ /dev/null @@ -1,48 +0,0 @@ -package org.jboss.examples.ticketmonster.util; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.ws.rs.core.MultivaluedMap; - -public class MultivaluedHashMap extends ForwardingMap> implements MultivaluedMap { - - public static MultivaluedMap EMPTY = new MultivaluedHashMap(); - - public static MultivaluedHashMap empty() { - return (MultivaluedHashMap) EMPTY; - } - - private Map> map = new HashMap>(); - - @Override - protected Map> delegate() { - return map; - } - - @Override - public void putSingle(K key, V value) { - List l = new ArrayList(1); - l.add(value); - put(key, l); - } - - @Override - public void add(K key, V value) { - List l = get(key); - if (l == null) { - l = new ArrayList(1); - put(key, l); - } - l.add(value); - } - - @Override - public V getFirst(K key) { - List l = get(key); - return l == null ? null : l.get(0); - } - -} diff --git a/demo/src/test/java/org/jboss/examples/ticketmonster/test/rest/BookingServiceTest.java b/demo/src/test/java/org/jboss/examples/ticketmonster/test/rest/BookingServiceTest.java index 740a40c6e..d19a875fc 100644 --- a/demo/src/test/java/org/jboss/examples/ticketmonster/test/rest/BookingServiceTest.java +++ b/demo/src/test/java/org/jboss/examples/ticketmonster/test/rest/BookingServiceTest.java @@ -9,6 +9,7 @@ import javax.inject.Inject; import javax.persistence.NoResultException; +import javax.ws.rs.core.MultivaluedHashMap; import javax.ws.rs.core.MultivaluedMap; import org.jboss.arquillian.container.test.api.Deployment; @@ -20,7 +21,6 @@ import org.jboss.examples.ticketmonster.model.Ticket; import org.jboss.examples.ticketmonster.model.TicketPrice; import org.jboss.examples.ticketmonster.rest.*; -import org.jboss.examples.ticketmonster.util.MultivaluedHashMap; import org.jboss.shrinkwrap.api.spec.WebArchive; import org.junit.Assert; import org.junit.Ignore; @@ -126,7 +126,7 @@ private void checkBooking3() { public void testPagination() { // Test pagination logic - MultivaluedMap queryParameters = new MultivaluedHashMap(); + MultivaluedMap queryParameters = new MultivaluedHashMap(); queryParameters.add("first", "2"); queryParameters.add("maxResults", "1"); diff --git a/demo/src/test/java/org/jboss/examples/ticketmonster/test/rest/EventServiceTest.java b/demo/src/test/java/org/jboss/examples/ticketmonster/test/rest/EventServiceTest.java index 369c715db..b1b538f1e 100644 --- a/demo/src/test/java/org/jboss/examples/ticketmonster/test/rest/EventServiceTest.java +++ b/demo/src/test/java/org/jboss/examples/ticketmonster/test/rest/EventServiceTest.java @@ -6,6 +6,7 @@ import java.util.List; import javax.inject.Inject; +import javax.ws.rs.core.MultivaluedHashMap; import javax.ws.rs.core.MultivaluedMap; import org.jboss.arquillian.container.test.api.Deployment; @@ -16,7 +17,6 @@ import org.jboss.examples.ticketmonster.rest.MediaService; import org.jboss.examples.ticketmonster.service.MediaManager; import org.jboss.examples.ticketmonster.service.MediaPath; -import org.jboss.examples.ticketmonster.util.MultivaluedHashMap; import org.jboss.shrinkwrap.api.spec.WebArchive; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/demo/src/test/java/org/jboss/examples/ticketmonster/test/rest/RESTDeployment.java b/demo/src/test/java/org/jboss/examples/ticketmonster/test/rest/RESTDeployment.java index 834dd50b2..83187b719 100644 --- a/demo/src/test/java/org/jboss/examples/ticketmonster/test/rest/RESTDeployment.java +++ b/demo/src/test/java/org/jboss/examples/ticketmonster/test/rest/RESTDeployment.java @@ -5,7 +5,7 @@ import org.jboss.examples.ticketmonster.rest.dto.VenueDTO; import org.jboss.examples.ticketmonster.service.*; import org.jboss.examples.ticketmonster.test.TicketMonsterDeployment; -import org.jboss.examples.ticketmonster.util.MultivaluedHashMap; +import org.jboss.examples.ticketmonster.util.Reflections; import org.jboss.shrinkwrap.api.spec.WebArchive; public class RESTDeployment { @@ -17,7 +17,7 @@ public static WebArchive deployment() { .addPackage(Booking.class.getPackage()) .addPackage(BaseEntityService.class.getPackage()) .addPackage(VenueDTO.class.getPackage()) - .addPackage(MultivaluedHashMap.class.getPackage()) + .addPackage(Reflections.class.getPackage()) .addPackage(SeatAllocationService.class.getPackage()) .addClass(AllocatedSeats.class) .addClass(MediaPath.class) diff --git a/demo/src/test/java/org/jboss/examples/ticketmonster/test/rest/ShowServiceTest.java b/demo/src/test/java/org/jboss/examples/ticketmonster/test/rest/ShowServiceTest.java index 126e8dbfa..ec9bc708d 100644 --- a/demo/src/test/java/org/jboss/examples/ticketmonster/test/rest/ShowServiceTest.java +++ b/demo/src/test/java/org/jboss/examples/ticketmonster/test/rest/ShowServiceTest.java @@ -6,13 +6,13 @@ import java.util.List; import javax.inject.Inject; +import javax.ws.rs.core.MultivaluedHashMap; import javax.ws.rs.core.MultivaluedMap; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.junit.Arquillian; import org.jboss.examples.ticketmonster.model.Show; import org.jboss.examples.ticketmonster.rest.ShowService; -import org.jboss.examples.ticketmonster.util.MultivaluedHashMap; import org.jboss.shrinkwrap.api.spec.WebArchive; import org.junit.Test; import org.junit.runner.RunWith; @@ -43,7 +43,7 @@ public void testGetShowById() { public void testPagination() { // Test pagination logic - MultivaluedMap queryParameters = new MultivaluedHashMap(); + MultivaluedMap queryParameters = new MultivaluedHashMap(); queryParameters.add("first", "2"); queryParameters.add("maxResults", "1"); diff --git a/demo/src/test/java/org/jboss/examples/ticketmonster/test/rest/VenueServiceTest.java b/demo/src/test/java/org/jboss/examples/ticketmonster/test/rest/VenueServiceTest.java index cb03c99e0..c8f34d9af 100644 --- a/demo/src/test/java/org/jboss/examples/ticketmonster/test/rest/VenueServiceTest.java +++ b/demo/src/test/java/org/jboss/examples/ticketmonster/test/rest/VenueServiceTest.java @@ -6,13 +6,13 @@ import java.util.List; import javax.inject.Inject; +import javax.ws.rs.core.MultivaluedHashMap; import javax.ws.rs.core.MultivaluedMap; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.junit.Arquillian; import org.jboss.examples.ticketmonster.model.Venue; import org.jboss.examples.ticketmonster.rest.VenueService; -import org.jboss.examples.ticketmonster.util.MultivaluedHashMap; import org.jboss.shrinkwrap.api.spec.WebArchive; import org.junit.Test; import org.junit.runner.RunWith;