// Path: cdi-properties-test/cdi-properties-test-common/src/main/java/com/byteslounge/cdi/test/common/ApplicationScopedBean.java
// @ApplicationScoped
// public class ApplicationScopedBean implements Serializable {
// 
//     private static final long serialVersionUID = 1L;
// 
//     @Inject
//     private InjectedBean injectedBean;
// 
//     public String getText() {
//         Assert.assertEquals(injectedBean.getText(), TestConstants.BEAN_TEST_RETURN_VALUE);
//         return TestConstants.BEAN_TEST_RETURN_VALUE;
//     }
// }
// 
// Path: cdi-properties-test/cdi-properties-test-common/src/main/java/com/byteslounge/cdi/test/common/DependentScopedBean.java
// public class DependentScopedBean {
// 
//     @Inject
//     private InjectedBean injectedBean;
// 
//     public String getText() {
//         Assert.assertEquals(injectedBean.getText(), TestConstants.BEAN_TEST_RETURN_VALUE);
//         return TestConstants.BEAN_TEST_RETURN_VALUE;
//     }
// }
// 
// Path: cdi-properties-test/cdi-properties-test-common/src/main/java/com/byteslounge/cdi/test/configuration/TestConstants.java
// public class TestConstants {
// 
//     private TestConstants() {
//     }
// 
//     public static final String OTHER_RESOURCE_BUNDLE_NAME = "bl.other";
//     public static final String BEAN_TEST_RETURN_VALUE = "getTextResult";
//     public static final String PROVIDED_RESOLVER_SUFFIX = "provided";
//     public static final String EXTERNAL_CLASSES_DIRECTORY = "target/external";
//     public static final String TEST_TARGET_CLASSES_DIRECTORY = "target/test-classes";
// 
// }
// 
// Path: cdi-properties-test/cdi-properties-test-common/src/main/java/com/byteslounge/cdi/test/model/TestEntity.java
// @Entity
// @Table(name = "TEST_ENTITY")
// public class TestEntity implements Serializable {
// 
//     private static final long serialVersionUID = 1L;
// 
//     @Id
//     @Column(name = "ID", nullable = false)
//     @GeneratedValue(strategy = GenerationType.AUTO, generator = "IdGenerator")
//     @GenericGenerator(name = "IdGenerator", strategy = "com.byteslounge.cdi.test.model.IdGenerator")
//     private Long id;
// 
//     @Column(name = "DESCRIPTION", nullable = false)
//     private String description;
// 
//     public Long getId() {
//         return id;
//     }
// 
//     public void setId(Long id) {
//         this.id = id;
//     }
// 
//     public String getDescription() {
//         return description;
//     }
// 
//     public void setDescription(String description) {
//         this.description = description;
//     }
// 
// }


import java.io.Serializable;
import java.util.Locale;
import java.util.ResourceBundle;
import javax.enterprise.context.ApplicationScoped;
import org.junit.Assert;
import com.byteslounge.cdi.annotation.PropertyBundle;
import com.byteslounge.cdi.annotation.PropertyKey;
import com.byteslounge.cdi.annotation.PropertyLocale;
import com.byteslounge.cdi.annotation.PropertyResolver;
import com.byteslounge.cdi.test.common.ApplicationScopedBean;
import com.byteslounge.cdi.test.common.DependentScopedBean;
import com.byteslounge.cdi.test.configuration.TestConstants;
import com.byteslounge.cdi.test.model.TestEntity;
/*
 * Copyright 2014 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.wpm;





@ApplicationScoped
public class ProvidedPropertyMethodResolver implements Serializable {

    private static final long serialVersionUID = 1L;

    // Lets provide a set of completely mixed up parameters in what matters to "logical" definition order
    @PropertyResolver
    public String resolveProperty(DependentScopedBean dependentScopedBean,
            RequestScopedBean requestScopedBean, SessionScopedBean sessionScopedBean,
            @PropertyBundle String bundleName, @PropertyLocale Locale locale,
            ApplicationScopedBean applicationScopedBean, @PropertyKey String key, Service service) {

        service.remove(1L);
        TestEntity testEntity = new TestEntity();
        testEntity.setId(1L);
        testEntity.setDescription("Description");
        testEntity = service.merge(testEntity);
        TestEntity other = service.findById(1L);
        Assert.assertEquals(new Long(1L), other.getId());

// Path: cdi-properties-test/cdi-properties-test-common/src/main/java/com/byteslounge/cdi/test/common/ApplicationScopedBean.java
// @ApplicationScoped
// public class ApplicationScopedBean implements Serializable {
// 
//     private static final long serialVersionUID = 1L;
// 
//     @Inject
//     private InjectedBean injectedBean;
// 
//     public String getText() {
//         Assert.assertEquals(injectedBean.getText(), TestConstants.BEAN_TEST_RETURN_VALUE);
//         return TestConstants.BEAN_TEST_RETURN_VALUE;
//     }
// }
// 
// Path: cdi-properties-test/cdi-properties-test-common/src/main/java/com/byteslounge/cdi/test/common/DependentScopedBean.java
// public class DependentScopedBean {
// 
//     @Inject
//     private InjectedBean injectedBean;
// 
//     public String getText() {
//         Assert.assertEquals(injectedBean.getText(), TestConstants.BEAN_TEST_RETURN_VALUE);
//         return TestConstants.BEAN_TEST_RETURN_VALUE;
//     }
// }
// 
// Path: cdi-properties-test/cdi-properties-test-common/src/main/java/com/byteslounge/cdi/test/configuration/TestConstants.java
// public class TestConstants {
// 
//     private TestConstants() {
//     }
// 
//     public static final String OTHER_RESOURCE_BUNDLE_NAME = "bl.other";
//     public static final String BEAN_TEST_RETURN_VALUE = "getTextResult";
//     public static final String PROVIDED_RESOLVER_SUFFIX = "provided";
//     public static final String EXTERNAL_CLASSES_DIRECTORY = "target/external";
//     public static final String TEST_TARGET_CLASSES_DIRECTORY = "target/test-classes";
// 
// }
// 
// Path: cdi-properties-test/cdi-properties-test-common/src/main/java/com/byteslounge/cdi/test/model/TestEntity.java
// @Entity
// @Table(name = "TEST_ENTITY")
// public class TestEntity implements Serializable {
// 
//     private static final long serialVersionUID = 1L;
// 
//     @Id
//     @Column(name = "ID", nullable = false)
//     @GeneratedValue(strategy = GenerationType.AUTO, generator = "IdGenerator")
//     @GenericGenerator(name = "IdGenerator", strategy = "com.byteslounge.cdi.test.model.IdGenerator")
//     private Long id;
// 
//     @Column(name = "DESCRIPTION", nullable = false)
//     private String description;
// 
//     public Long getId() {
//         return id;
//     }
// 
//     public void setId(Long id) {
//         this.id = id;
//     }
// 
//     public String getDescription() {
//         return description;
//     }
// 
//     public void setDescription(String description) {
//         this.description = description;
//     }
// 
// }


// Path: cdi-properties-test/cdi-properties-test-common/src/main/java/com/byteslounge/cdi/test/wpm/ProvidedPropertyMethodResolver.java
import java.io.Serializable;
import java.util.Locale;
import java.util.ResourceBundle;
import javax.enterprise.context.ApplicationScoped;
import org.junit.Assert;
import com.byteslounge.cdi.annotation.PropertyBundle;
import com.byteslounge.cdi.annotation.PropertyKey;
import com.byteslounge.cdi.annotation.PropertyLocale;
import com.byteslounge.cdi.annotation.PropertyResolver;
import com.byteslounge.cdi.test.common.ApplicationScopedBean;
import com.byteslounge.cdi.test.common.DependentScopedBean;
import com.byteslounge.cdi.test.configuration.TestConstants;
import com.byteslounge.cdi.test.model.TestEntity;

/*
 * Copyright 2014 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.wpm;





@ApplicationScoped
public class ProvidedPropertyMethodResolver implements Serializable {

    private static final long serialVersionUID = 1L;

    // Lets provide a set of completely mixed up parameters in what matters to "logical" definition order
    @PropertyResolver
    public String resolveProperty(DependentScopedBean dependentScopedBean,
            RequestScopedBean requestScopedBean, SessionScopedBean sessionScopedBean,
            @PropertyBundle String bundleName, @PropertyLocale Locale locale,
            ApplicationScopedBean applicationScopedBean, @PropertyKey String key, Service service) {

        service.remove(1L);
        TestEntity testEntity = new TestEntity();
        testEntity.setId(1L);
        testEntity.setDescription("Description");
        testEntity = service.merge(testEntity);
        TestEntity other = service.findById(1L);
        Assert.assertEquals(new Long(1L), other.getId());

        Assert.assertEquals(dependentScopedBean.getText(), TestConstants.BEAN_TEST_RETURN_VALUE);