Updated Branches: refs/heads/javelin dcf3790e8 -> 16ed8701d
Test of using Spring DI to implement Basic/Premium configuration Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/16ed8701 Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/16ed8701 Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/16ed8701 Branch: refs/heads/javelin Commit: 16ed8701dac6115708a2ac653d95d778da7f1af5 Parents: dcf3790 Author: Kelven Yang <[email protected]> Authored: Thu Oct 25 18:22:19 2012 -0700 Committer: Kelven Yang <[email protected]> Committed: Thu Oct 25 18:22:32 2012 -0700 ---------------------------------------------------------------------- utils/test/com/cloud/utils/DummyImpl.java | 28 +++++++++++ utils/test/com/cloud/utils/DummyInterface.java | 21 +++++++++ utils/test/com/cloud/utils/DummyPremiumImpl.java | 30 ++++++++++++ utils/test/com/cloud/utils/QualifierTest.java | 36 +++++++++++++++ utils/test/com/cloud/utils/db/DbAnnotatedBase.java | 10 ++++ .../utils/db/TransactionContextBuilderTest.java | 2 +- .../com/cloud/utils/QualifierTestContext.xml | 19 ++++++++ .../utils/db/transactionContextBuilderTest.xml | 29 ++++++++++++ .../resources/transactionContextBuilderTest.xml | 30 ------------ 9 files changed, 174 insertions(+), 31 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/16ed8701/utils/test/com/cloud/utils/DummyImpl.java ---------------------------------------------------------------------- diff --git a/utils/test/com/cloud/utils/DummyImpl.java b/utils/test/com/cloud/utils/DummyImpl.java new file mode 100644 index 0000000..467d8e2 --- /dev/null +++ b/utils/test/com/cloud/utils/DummyImpl.java @@ -0,0 +1,28 @@ +// 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 +// 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.cloud.utils; + +import org.springframework.stereotype.Component; + +@Component +public class DummyImpl implements DummyInterface { + + @Override + public void foo() { + System.out.println("Basic foo implementation"); + } +} http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/16ed8701/utils/test/com/cloud/utils/DummyInterface.java ---------------------------------------------------------------------- diff --git a/utils/test/com/cloud/utils/DummyInterface.java b/utils/test/com/cloud/utils/DummyInterface.java new file mode 100644 index 0000000..f79a53e --- /dev/null +++ b/utils/test/com/cloud/utils/DummyInterface.java @@ -0,0 +1,21 @@ +// 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 +// 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.cloud.utils; + +public interface DummyInterface { + void foo(); +} http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/16ed8701/utils/test/com/cloud/utils/DummyPremiumImpl.java ---------------------------------------------------------------------- diff --git a/utils/test/com/cloud/utils/DummyPremiumImpl.java b/utils/test/com/cloud/utils/DummyPremiumImpl.java new file mode 100644 index 0000000..111f087 --- /dev/null +++ b/utils/test/com/cloud/utils/DummyPremiumImpl.java @@ -0,0 +1,30 @@ +// 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 +// 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.cloud.utils; + +import org.springframework.context.annotation.Primary; +import org.springframework.stereotype.Component; + +@Component +@Primary +public class DummyPremiumImpl implements DummyInterface { + + @Override + public void foo() { + System.out.println("Premium foo implementation"); + } +} http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/16ed8701/utils/test/com/cloud/utils/QualifierTest.java ---------------------------------------------------------------------- diff --git a/utils/test/com/cloud/utils/QualifierTest.java b/utils/test/com/cloud/utils/QualifierTest.java new file mode 100644 index 0000000..10c0e81 --- /dev/null +++ b/utils/test/com/cloud/utils/QualifierTest.java @@ -0,0 +1,36 @@ +// 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 +// 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.cloud.utils; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(locations="classpath:/com/cloud/utils/QualifierTestContext.xml") +public class QualifierTest { + + @Autowired + DummyInterface _dummy; + + @Test + public void test() { + _dummy.foo(); + } +} http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/16ed8701/utils/test/com/cloud/utils/db/DbAnnotatedBase.java ---------------------------------------------------------------------- diff --git a/utils/test/com/cloud/utils/db/DbAnnotatedBase.java b/utils/test/com/cloud/utils/db/DbAnnotatedBase.java index c9b77b7..2160a35 100644 --- a/utils/test/com/cloud/utils/db/DbAnnotatedBase.java +++ b/utils/test/com/cloud/utils/db/DbAnnotatedBase.java @@ -16,6 +16,11 @@ // under the License. package com.cloud.utils.db; + +import javax.annotation.PostConstruct; + +import junit.framework.Assert; + import org.apache.log4j.Logger; import org.springframework.stereotype.Component; @@ -24,6 +29,11 @@ import org.springframework.stereotype.Component; public class DbAnnotatedBase { private static final Logger s_logger = Logger.getLogger(DbAnnotatedBase.class); + @PostConstruct + public void initTest() { + Assert.assertTrue(true); + } + public void MethodWithClassDbAnnotated() { s_logger.info("called"); } http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/16ed8701/utils/test/com/cloud/utils/db/TransactionContextBuilderTest.java ---------------------------------------------------------------------- diff --git a/utils/test/com/cloud/utils/db/TransactionContextBuilderTest.java b/utils/test/com/cloud/utils/db/TransactionContextBuilderTest.java index 74e0ab9..ca9d47a 100644 --- a/utils/test/com/cloud/utils/db/TransactionContextBuilderTest.java +++ b/utils/test/com/cloud/utils/db/TransactionContextBuilderTest.java @@ -8,7 +8,7 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(locations="classpath:/transactioncontextBuilderTest.xml") +@ContextConfiguration(locations="classpath:/com/cloud/utils/db/transactioncontextBuilderTest.xml") public class TransactionContextBuilderTest { @Inject http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/16ed8701/utils/test/resources/com/cloud/utils/QualifierTestContext.xml ---------------------------------------------------------------------- diff --git a/utils/test/resources/com/cloud/utils/QualifierTestContext.xml b/utils/test/resources/com/cloud/utils/QualifierTestContext.xml new file mode 100644 index 0000000..c045f98 --- /dev/null +++ b/utils/test/resources/com/cloud/utils/QualifierTestContext.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<beans xmlns="http://www.springframework.org/schema/beans" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:context="http://www.springframework.org/schema/context" + xmlns:tx="http://www.springframework.org/schema/tx" + xmlns:aop="http://www.springframework.org/schema/aop" + xsi:schemaLocation="http://www.springframework.org/schema/beans + http://www.springframework.org/schema/beans/spring-beans-3.0.xsd + http://www.springframework.org/schema/tx + http://www.springframework.org/schema/tx/spring-tx-3.0.xsd + http://www.springframework.org/schema/aop + http://www.springframework.org/schema/aop/spring-aop-3.0.xsd + http://www.springframework.org/schema/context + http://www.springframework.org/schema/context/spring-context-3.0.xsd"> + <context:annotation-config /> + <context:component-scan base-package="org.apache.cloudstack, com.cloud" /> + +</beans> http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/16ed8701/utils/test/resources/com/cloud/utils/db/transactionContextBuilderTest.xml ---------------------------------------------------------------------- diff --git a/utils/test/resources/com/cloud/utils/db/transactionContextBuilderTest.xml b/utils/test/resources/com/cloud/utils/db/transactionContextBuilderTest.xml new file mode 100644 index 0000000..8a34670 --- /dev/null +++ b/utils/test/resources/com/cloud/utils/db/transactionContextBuilderTest.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<beans xmlns="http://www.springframework.org/schema/beans" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:context="http://www.springframework.org/schema/context" + xmlns:tx="http://www.springframework.org/schema/tx" + xmlns:aop="http://www.springframework.org/schema/aop" + xsi:schemaLocation="http://www.springframework.org/schema/beans + http://www.springframework.org/schema/beans/spring-beans-3.0.xsd + http://www.springframework.org/schema/tx + http://www.springframework.org/schema/tx/spring-tx-3.0.xsd + http://www.springframework.org/schema/aop + http://www.springframework.org/schema/aop/spring-aop-3.0.xsd + http://www.springframework.org/schema/context + http://www.springframework.org/schema/context/spring-context-3.0.xsd"> + <context:annotation-config /> + <context:component-scan base-package="org.apache.cloudstack, com.cloud" /> + + <aop:config proxy-target-class="true"> + <aop:aspect id="dbContextBuilder" ref="transactionContextBuilder"> + <aop:pointcut id="captureAnyMethod" + expression="execution(* *(..))" /> + <aop:around pointcut-ref="captureAnyMethod" method="AroundAnyMethod"/> + </aop:aspect> + </aop:config> + + <bean id="transactionContextBuilder" class="com.cloud.utils.db.TransactionContextBuilder" /> + +</beans> http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/16ed8701/utils/test/resources/transactionContextBuilderTest.xml ---------------------------------------------------------------------- diff --git a/utils/test/resources/transactionContextBuilderTest.xml b/utils/test/resources/transactionContextBuilderTest.xml deleted file mode 100644 index 4672343..0000000 --- a/utils/test/resources/transactionContextBuilderTest.xml +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<beans xmlns="http://www.springframework.org/schema/beans" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns:context="http://www.springframework.org/schema/context" - xmlns:tx="http://www.springframework.org/schema/tx" - xmlns:aop="http://www.springframework.org/schema/aop" - xsi:schemaLocation="http://www.springframework.org/schema/beans - http://www.springframework.org/schema/beans/spring-beans-3.0.xsd - http://www.springframework.org/schema/tx - http://www.springframework.org/schema/tx/spring-tx-3.0.xsd - http://www.springframework.org/schema/aop - http://www.springframework.org/schema/aop/spring-aop-3.0.xsd - http://www.springframework.org/schema/context - http://www.springframework.org/schema/context/spring-context-3.0.xsd"> - <context:annotation-config /> - - <context:component-scan base-package="org.apache.cloudstack, com.cloud" /> - - <aop:config proxy-target-class="true"> - <aop:aspect id="dbContextBuilder" ref="transactionContextBuilder"> - <aop:pointcut id="captureAnyMethod" - expression="execution(* *(..))" /> - <aop:around pointcut-ref="captureAnyMethod" method="AroundAnyMethod"/> - </aop:aspect> - </aop:config> - - <bean id="transactionContextBuilder" class="com.cloud.utils.db.TransactionContextBuilder" /> - -</beans>
