Skip to content

Commit

Permalink
WELD-1792 Extend testcase
Browse files Browse the repository at this point in the history
  • Loading branch information
jharting committed Mar 6, 2015
1 parent e82391f commit cf1db99
Show file tree
Hide file tree
Showing 8 changed files with 185 additions and 9 deletions.
10 changes: 3 additions & 7 deletions impl/src/main/java/org/jboss/weld/util/Proxies.java
Expand Up @@ -17,6 +17,7 @@
package org.jboss.weld.util;

import java.lang.reflect.Constructor;
import java.lang.reflect.GenericArrayType;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.security.AccessController;
Expand Down Expand Up @@ -173,13 +174,8 @@ public static UnproxyableResolutionException getUnproxyableTypesException(Iterab


public static UnproxyableResolutionException getUnproxyableTypeException(Type type, Bean<?> declaringBean, ServiceRegistry services) {
if (type instanceof Class<?>) {
return getUnproxyableClassException((Class<?>) type, declaringBean, services);
} else if (type instanceof ParameterizedType) {
Type rawType = ((ParameterizedType) type).getRawType();
if (rawType instanceof Class<?>) {
return getUnproxyableClassException((Class<?>) rawType, declaringBean, services);
}
if (type instanceof Class<?> || type instanceof ParameterizedType || type instanceof GenericArrayType) {
return getUnproxyableClassException(Reflections.getRawType(type), declaringBean, services);
}
return ValidatorLogger.LOG.notProxyableUnknown(type, getDeclaringBeanInfo(declaringBean));
}
Expand Down
Expand Up @@ -23,8 +23,14 @@ public class DependentBar {
@Inject
NormalScopedFoo foo;

@Inject
NormalScopedBaz baz;

public NormalScopedFoo getFoo() {
return foo;
}

public NormalScopedBaz getBaz() {
return baz;
}
}
@@ -0,0 +1,30 @@
/*
* JBoss, Home of Professional Open Source
* Copyright 2015, Red Hat, Inc., and individual contributors
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* 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 org.jboss.weld.tests.proxy.instantiator.unsafe;

import javax.enterprise.context.RequestScoped;

@RequestScoped
public class NormalScopedBaz {

private NormalScopedBaz() {
}

public String ping() {
return "baz";
}
}
Expand Up @@ -24,7 +24,6 @@
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.EmptyAsset;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;

Expand All @@ -40,7 +39,7 @@ public static WebArchive createTestArchive() {
}

@Test
public void testClientProxy(DependentBar bar) {
public void testNoConstructorForProxy(DependentBar bar) {
assertNotNull(bar);
// The proxy is not null
assertNotNull(bar.getFoo());
Expand All @@ -53,4 +52,11 @@ public void testClientProxy(DependentBar bar) {
assertNotNull(id);
assertEquals("Et voila!", id);
}

@Test
public void testPrivateConstructorForProxy(DependentBar bar) {
assertNotNull(bar);
assertNotNull(bar.getBaz());
assertEquals("baz", bar.getBaz().ping());
}
}
@@ -0,0 +1,50 @@
/*
* JBoss, Home of Professional Open Source
* Copyright 2015, Red Hat, Inc., and individual contributors
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* 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 org.jboss.weld.tests.scope.unproxyable.array;

import java.lang.reflect.GenericArrayType;

import javax.enterprise.inject.spi.DeploymentException;

import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.container.test.api.ShouldThrowException;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.Archive;
import org.jboss.shrinkwrap.api.BeanArchive;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.junit.Test;
import org.junit.runner.RunWith;

/**
* Verifies, that a producer is detected as unproxyable when its return type is a {@link GenericArrayType}.
*
* @author Jozef Hartinger
*
*/
@RunWith(Arquillian.class)
public class GenericArrayProducerNotProxyableTest {

@Deployment
@ShouldThrowException(DeploymentException.class)
public static Archive<?> getDeployment() {
return ShrinkWrap.create(BeanArchive.class).addPackage(GenericArrayProducerNotProxyableTest.class.getPackage());
}

@Test
public void test() {
}
}
@@ -0,0 +1,27 @@
/*
* JBoss, Home of Professional Open Source
* Copyright 2015, Red Hat, Inc., and individual contributors
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* 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 org.jboss.weld.tests.scope.unproxyable.array;

import java.util.Comparator;

import javax.inject.Inject;

public class Injected {

@Inject
Comparator<String>[] comparator;
}
@@ -0,0 +1,30 @@
/*
* JBoss, Home of Professional Open Source
* Copyright 2015, Red Hat, Inc., and individual contributors
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* 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 org.jboss.weld.tests.scope.unproxyable.array;

import java.util.Comparator;

import javax.enterprise.inject.Vetoed;

@Vetoed
public class StringComparator implements Comparator<String> {

@Override
public int compare(String o1, String o2) {
return 0;
}
}
@@ -0,0 +1,31 @@
/*
* JBoss, Home of Professional Open Source
* Copyright 2015, Red Hat, Inc., and individual contributors
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* 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 org.jboss.weld.tests.scope.unproxyable.array;

import java.util.Comparator;

import javax.enterprise.context.RequestScoped;
import javax.enterprise.inject.Produces;

public class StringComparatorArrayProducer {

@Produces
@RequestScoped
public Comparator<String>[] produce() {
return new StringComparator[0];
}
}

0 comments on commit cf1db99

Please sign in to comment.