// Path: cdi-properties-test/cdi-properties-test-common/src/main/java/com/byteslounge/cdi/test/common/servlet/TestServlet.java
// @WebServlet(urlPatterns = "/testservlet")
// public class TestServlet extends HttpServlet {
// 
//     private static final long serialVersionUID = 1L;
// 
//     @EJB
//     private OtherService otherService;
// 
//     @Override
//     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//         Assert.assertEquals(Integer.class, otherService.getInteger().getClass());
//         Assert.assertEquals(new Integer(2), otherService.getInteger());
//         req.setAttribute("result", otherService.getText());
//         req.setAttribute("integer", otherService.getInteger());
//         req.getRequestDispatcher("test.jsp").forward(req, resp);
//     }
// 
// }
// 
// Path: cdi-properties-test/cdi-properties-test-common/src/main/java/com/byteslounge/cdi/test/common/session/UserSession.java
// @SessionScoped
// public class UserSession implements Serializable {
// 
//     private static final long serialVersionUID = 1L;
//     private Locale locale;
// 
//     public Locale getLocale() {
//         return locale;
//     }
// 
//     public void setLocale(Locale locale) {
//         this.locale = locale;
//     }
// 
// }
// 
// Path: cdi-properties-test/cdi-properties-test-common/src/main/java/com/byteslounge/cdi/test/it/common/IntegrationTestDeploymentUtils.java
// public static class DeploymentAppenderFactory {
// 
//     private DeploymentAppenderFactory() {
//     }
// 
//     public static WebDeploymentAppender create(WebArchive archive) {
//         return new WebDeploymentAppender(archive);
//     }
// 
//     public static JavaDeploymentAppender create(JavaArchive archive) {
//         return new JavaDeploymentAppender(archive);
//     }
// 
//     public static EnterpriseDeploymentAppender create(EnterpriseArchive archive) {
//         return new EnterpriseDeploymentAppender(archive);
//     }
// }
// 
// Path: cdi-properties-test/cdi-properties-test-common/src/main/java/com/byteslounge/cdi/test/wpm/OtherService.java
// @Local
// public interface OtherService extends Serializable {
// 
//     String getText();
// 
//     Integer getInteger();
// 
// }
// 
// Path: cdi-properties-test/cdi-properties-test-common/src/main/java/com/byteslounge/cdi/test/wpm/OtherServiceBean.java
// @Stateless
// public class OtherServiceBean implements OtherService {
// 
//     private static final long serialVersionUID = 1L;
// 
//     @Property("hello.world")
//     private String text;
// 
//     @Property("some.integer")
//     private Integer integer;
// 
//     @Override
//     public String getText() {
//         return text;
//     }
// 
//     @Override
//     public Integer getInteger() {
//         return integer;
//     }
// 
// }
// 
// Path: cdi-properties-test/cdi-properties-test-common/src/main/java/com/byteslounge/cdi/test/wpm/ProvidedLocaleMethodResolverSession.java
// @ApplicationScoped
// public class ProvidedLocaleMethodResolverSession implements Serializable {
// 
//     private static final long serialVersionUID = 1L;
// 
//     @LocaleResolver
//     public Locale resolveLocale(UserSession userSession) {
//         return userSession.getLocale();
//     }
// 
// }


import java.io.IOException;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import com.byteslounge.cdi.test.common.servlet.TestServlet;
import com.byteslounge.cdi.test.common.session.UserSession;
import com.byteslounge.cdi.test.it.common.IntegrationTestDeploymentUtils.DeploymentAppenderFactory;
import com.byteslounge.cdi.test.wpm.OtherService;
import com.byteslounge.cdi.test.wpm.OtherServiceBean;
import com.byteslounge.cdi.test.wpm.ProvidedLocaleMethodResolverSession;
/*
 * Copyright 2015 byteslounge.com (Gonçalo Marques).
 *
 * Licensed 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 com.byteslounge.cdi.test.it.common;




/**
 * Base class for Integration Tests which resolve the current locale from the user session
 * 
 * @author Gonçalo Marques
 * @since 1.1.0
 */
public abstract class AbstractWarProvidedLocaleMethodSession {

    protected static WebArchive createArchive() throws IOException {

        WebArchive webArchive = ShrinkWrap.create(WebArchive.class, "cdipropertiestest.war").addClasses(
                ProvidedLocaleMethodResolverSession.class, OtherService.class, OtherServiceBean.class,
                TestServlet.class, UserSession.class);
        DeploymentAppenderFactory.create(webArchive)
                .appendWebXml("../cdi-properties-test-common/src/test/resources/assets/warCommon/WEB-INF/simpleWeb.xml")
                .appendWebResource("../cdi-properties-test-common/src/test/resources/assets/warCommon/webapp/test.jsp")
// Path: cdi-properties-test/cdi-properties-test-common/src/main/java/com/byteslounge/cdi/test/common/servlet/TestServlet.java
// @WebServlet(urlPatterns = "/testservlet")
// public class TestServlet extends HttpServlet {
// 
//     private static final long serialVersionUID = 1L;
// 
//     @EJB
//     private OtherService otherService;
// 
//     @Override
//     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//         Assert.assertEquals(Integer.class, otherService.getInteger().getClass());
//         Assert.assertEquals(new Integer(2), otherService.getInteger());
//         req.setAttribute("result", otherService.getText());
//         req.setAttribute("integer", otherService.getInteger());
//         req.getRequestDispatcher("test.jsp").forward(req, resp);
//     }
// 
// }
// 
// Path: cdi-properties-test/cdi-properties-test-common/src/main/java/com/byteslounge/cdi/test/common/session/UserSession.java
// @SessionScoped
// public class UserSession implements Serializable {
// 
//     private static final long serialVersionUID = 1L;
//     private Locale locale;
// 
//     public Locale getLocale() {
//         return locale;
//     }
// 
//     public void setLocale(Locale locale) {
//         this.locale = locale;
//     }
// 
// }
// 
// Path: cdi-properties-test/cdi-properties-test-common/src/main/java/com/byteslounge/cdi/test/it/common/IntegrationTestDeploymentUtils.java
// public static class DeploymentAppenderFactory {
// 
//     private DeploymentAppenderFactory() {
//     }
// 
//     public static WebDeploymentAppender create(WebArchive archive) {
//         return new WebDeploymentAppender(archive);
//     }
// 
//     public static JavaDeploymentAppender create(JavaArchive archive) {
//         return new JavaDeploymentAppender(archive);
//     }
// 
//     public static EnterpriseDeploymentAppender create(EnterpriseArchive archive) {
//         return new EnterpriseDeploymentAppender(archive);
//     }
// }
// 
// Path: cdi-properties-test/cdi-properties-test-common/src/main/java/com/byteslounge/cdi/test/wpm/OtherService.java
// @Local
// public interface OtherService extends Serializable {
// 
//     String getText();
// 
//     Integer getInteger();
// 
// }
// 
// Path: cdi-properties-test/cdi-properties-test-common/src/main/java/com/byteslounge/cdi/test/wpm/OtherServiceBean.java
// @Stateless
// public class OtherServiceBean implements OtherService {
// 
//     private static final long serialVersionUID = 1L;
// 
//     @Property("hello.world")
//     private String text;
// 
//     @Property("some.integer")
//     private Integer integer;
// 
//     @Override
//     public String getText() {
//         return text;
//     }
// 
//     @Override
//     public Integer getInteger() {
//         return integer;
//     }
// 
// }
// 
// Path: cdi-properties-test/cdi-properties-test-common/src/main/java/com/byteslounge/cdi/test/wpm/ProvidedLocaleMethodResolverSession.java
// @ApplicationScoped
// public class ProvidedLocaleMethodResolverSession implements Serializable {
// 
//     private static final long serialVersionUID = 1L;
// 
//     @LocaleResolver
//     public Locale resolveLocale(UserSession userSession) {
//         return userSession.getLocale();
//     }
// 
// }


// Path: cdi-properties-test/cdi-properties-test-common/src/main/java/com/byteslounge/cdi/test/it/common/AbstractWarProvidedLocaleMethodSession.java
import java.io.IOException;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import com.byteslounge.cdi.test.common.servlet.TestServlet;
import com.byteslounge.cdi.test.common.session.UserSession;
import com.byteslounge.cdi.test.it.common.IntegrationTestDeploymentUtils.DeploymentAppenderFactory;
import com.byteslounge.cdi.test.wpm.OtherService;
import com.byteslounge.cdi.test.wpm.OtherServiceBean;
import com.byteslounge.cdi.test.wpm.ProvidedLocaleMethodResolverSession;

/*
 * Copyright 2015 byteslounge.com (Gonçalo Marques).
 *
 * Licensed 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 com.byteslounge.cdi.test.it.common;




/**
 * Base class for Integration Tests which resolve the current locale from the user session
 * 
 * @author Gonçalo Marques
 * @since 1.1.0
 */
public abstract class AbstractWarProvidedLocaleMethodSession {

    protected static WebArchive createArchive() throws IOException {

        WebArchive webArchive = ShrinkWrap.create(WebArchive.class, "cdipropertiestest.war").addClasses(
                ProvidedLocaleMethodResolverSession.class, OtherService.class, OtherServiceBean.class,
                TestServlet.class, UserSession.class);
        DeploymentAppenderFactory.create(webArchive)
                .appendWebXml("../cdi-properties-test-common/src/test/resources/assets/warCommon/WEB-INF/simpleWeb.xml")
                .appendWebResource("../cdi-properties-test-common/src/test/resources/assets/warCommon/webapp/test.jsp")
                .appendCDIPropertiesLib()