You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by ma...@apache.org on 2010/03/06 11:13:07 UTC
svn commit: r919732 - in /incubator/aries/trunk/jpa/jpa-blueprint-aries/src:
main/java/org/apache/aries/jpa/blueprint/aries/impl/NSHandler.java
test/java/org/apache/aries/jpa/blueprint/aries/test/NSHandlerTest.java
Author: mahrwald
Date: Sat Mar 6 10:13:06 2010
New Revision: 919732
URL: http://svn.apache.org/viewvc?rev=919732&view=rev
Log:
ARIES-221: Use MutableBeanMetadata instead of proxying bean metadata
Modified:
incubator/aries/trunk/jpa/jpa-blueprint-aries/src/main/java/org/apache/aries/jpa/blueprint/aries/impl/NSHandler.java
incubator/aries/trunk/jpa/jpa-blueprint-aries/src/test/java/org/apache/aries/jpa/blueprint/aries/test/NSHandlerTest.java
Modified: incubator/aries/trunk/jpa/jpa-blueprint-aries/src/main/java/org/apache/aries/jpa/blueprint/aries/impl/NSHandler.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-blueprint-aries/src/main/java/org/apache/aries/jpa/blueprint/aries/impl/NSHandler.java?rev=919732&r1=919731&r2=919732&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-blueprint-aries/src/main/java/org/apache/aries/jpa/blueprint/aries/impl/NSHandler.java (original)
+++ incubator/aries/trunk/jpa/jpa-blueprint-aries/src/main/java/org/apache/aries/jpa/blueprint/aries/impl/NSHandler.java Sat Mar 6 10:13:06 2010
@@ -120,24 +120,27 @@
ParserContext context) {
// The node should always be an element
if (node.getNodeType() != Node.ELEMENT_NODE) {
- _logger
- .error(
- "The JPA namespace handler does not understand the DOM node {}.",
+ _logger.error("The JPA namespace handler does not understand the DOM node {}.",
new Object[] { node });
- throw new IllegalArgumentException();
+ throw new IllegalArgumentException(node.toString());
}
Element element = (Element) node;
// The surrounding component should always be a bean
if (!(component instanceof BeanMetadata)) {
- _logger
- .error(
- "The JPA namespace should only be used to inject properties into a bean. The surrounding component was {}.",
+ _logger.error("The JPA namespace should only be used to inject properties into a bean. The surrounding component was {}.",
new Object[] { component });
- throw new IllegalArgumentException();
+ throw new IllegalArgumentException(component.toString());
+ }
+
+ if (!(component instanceof MutableBeanMetadata)) {
+ _logger.error("The JPA namespace should only be used to inject properties into beans " +
+ "that implement the MutableBeanMetadata interface. " +
+ "The surrounding component was {}.", new Object[] { component });
+ throw new IllegalArgumentException(component.toString());
}
- final BeanMetadata bean = (BeanMetadata) component;
+ MutableBeanMetadata bean = (MutableBeanMetadata) component;
if (!NS_URI.equals(element.getNamespaceURI())) {
_logger
@@ -181,30 +184,9 @@
}
}
- // Create a new Bean to replace the one passed in
- if (bean instanceof ExtendedBeanMetadata) {
- return new ExtendedBeanMetadataProxy((ExtendedBeanMetadata) bean) {
- @Override
- public List getProperties() {
- // Remember to add the jpa injection property
- ArrayList<BeanProperty> result = new ArrayList<BeanProperty>(
- bean.getProperties());
- result.add(beanProperty);
- return result;
- }
- };
- } else {
- return new BeanMetadataProxy(bean) {
- @Override
- public List getProperties() {
- // Remember to add the jpa injection property
- ArrayList<BeanProperty> result = new ArrayList<BeanProperty>(
- bean.getProperties());
- result.add(beanProperty);
- return result;
- }
- };
- }
+ bean.addProperty(beanProperty);
+
+ return bean;
}
@SuppressWarnings("unchecked")
@@ -215,8 +197,7 @@
public URL getSchemaLocation(String namespace) {
if(NS_URI.equals(namespace))
- return getClass().getResource(
- "/org/apache/aries/jpa/blueprint/namespace/jpa.xsd");
+ return getClass().getResource("/org/apache/aries/jpa/blueprint/namespace/jpa.xsd");
else
return null;
}
@@ -226,8 +207,7 @@
* The namespace does not define any top-level elements, so we should
* never get here. In case we do -> explode.
*/
- _logger
- .error("The JPA namespace handler was called to parse a top level element.");
+ _logger.error("The JPA namespace handler was called to parse a top level element.");
throw new UnsupportedOperationException();
}
@@ -269,14 +249,10 @@
if (_logger.isDebugEnabled()) {
if (isPersistenceUnit)
- _logger
- .debug(
- "Creating blueprint injection metadata to inject the unit {} into bean property {}",
+ _logger.debug("Creating blueprint injection metadata to inject the unit {} into bean property {}",
new Object[] { unitName, property });
else
- _logger
- .debug(
- "Creating blueprint injection metadata to inject the context {} into bean property {}",
+ _logger.debug("Creating blueprint injection metadata to inject the context {} into bean property {}",
new Object[] { unitName, property });
}
@@ -345,8 +321,7 @@
ReferenceMetadata factory) {
if (_logger.isDebugEnabled())
- _logger
- .debug("Creating a managed persistence context definition for injection");
+ _logger.debug("Creating a managed persistence context definition for injection");
// Register the factory bean, and then create an entitymanager from it
ctx.getComponentDefinitionRegistry().registerComponentDefinition(
@@ -421,8 +396,7 @@
result.put(key.getStringValue(), value.getStringValue());
} else {
- _logger
- .error("There was a problem parsing a map of JPA properties");
+ _logger.error("There was a problem parsing a map of JPA properties");
throw new UnsupportedOperationException();
}
}
@@ -430,77 +404,4 @@
return result;
}
-
- private static class BeanMetadataProxy implements BeanMetadata {
- private final BeanMetadata delegate;
-
- public BeanMetadataProxy(BeanMetadata delegate) {
- this.delegate = delegate;
- }
-
- public List getArguments() {
- return delegate.getArguments();
- }
-
- public String getClassName() {
- return delegate.getClassName();
- }
-
- public String getDestroyMethod() {
- return delegate.getDestroyMethod();
- }
-
- public Target getFactoryComponent() {
- return delegate.getFactoryComponent();
- }
-
- public String getFactoryMethod() {
- return delegate.getFactoryMethod();
- }
-
- public String getInitMethod() {
- return delegate.getInitMethod();
- }
-
- public List getProperties() {
- return delegate.getProperties();
- }
-
- public String getScope() {
- return delegate.getScope();
- }
-
- public int getActivation() {
- return delegate.getActivation();
- }
-
- public List getDependsOn() {
- return delegate.getDependsOn();
- }
-
- public String getId() {
- return delegate.getId();
- }
- }
-
- private static class ExtendedBeanMetadataProxy extends BeanMetadataProxy implements ExtendedBeanMetadata {
- private final ExtendedBeanMetadata delegate;
-
- public ExtendedBeanMetadataProxy(ExtendedBeanMetadata delegate) {
- super(delegate);
- this.delegate = delegate;
- }
-
- public boolean getFieldInjection() {
- return delegate.getFieldInjection();
- }
-
- public Class<?> getRuntimeClass() {
- return delegate.getRuntimeClass();
- }
-
- public boolean isProcessor() {
- return delegate.isProcessor();
- }
- }
}
Modified: incubator/aries/trunk/jpa/jpa-blueprint-aries/src/test/java/org/apache/aries/jpa/blueprint/aries/test/NSHandlerTest.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-blueprint-aries/src/test/java/org/apache/aries/jpa/blueprint/aries/test/NSHandlerTest.java?rev=919732&r1=919731&r2=919732&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-blueprint-aries/src/test/java/org/apache/aries/jpa/blueprint/aries/test/NSHandlerTest.java (original)
+++ incubator/aries/trunk/jpa/jpa-blueprint-aries/src/test/java/org/apache/aries/jpa/blueprint/aries/test/NSHandlerTest.java Sat Mar 6 10:13:06 2010
@@ -129,7 +129,7 @@
public void testUnit() {
Element e = getTestElement("unit");
BeanMetadata bean =
- (BeanMetadata) sut.decorate(e, Skeleton.newMock(BeanMetadata.class), parserCtx);
+ (BeanMetadata) sut.decorate(e, new BeanMetadataImpl(), parserCtx);
BeanProperty property = (BeanProperty) bean.getProperties().get(0);
ReferenceMetadata reference = (ReferenceMetadata) property.getValue();
@@ -146,7 +146,7 @@
public void testUnitNoName() {
Element e = getTestElement("unitNoName");
BeanMetadata bean =
- (BeanMetadata) sut.decorate(e, Skeleton.newMock(BeanMetadata.class), parserCtx);
+ (BeanMetadata) sut.decorate(e, new BeanMetadataImpl(), parserCtx);
BeanProperty property = (BeanProperty) bean.getProperties().get(0);
ReferenceMetadata reference = (ReferenceMetadata) property.getValue();
@@ -161,7 +161,7 @@
public void testEmptyUnitName() {
Element e = getTestElement("emptyUnitName");
BeanMetadata bean =
- (BeanMetadata) sut.decorate(e, Skeleton.newMock(BeanMetadata.class), parserCtx);
+ (BeanMetadata) sut.decorate(e, new BeanMetadataImpl(), parserCtx);
BeanProperty property = (BeanProperty) bean.getProperties().get(0);
ReferenceMetadata reference = (ReferenceMetadata) property.getValue();
@@ -191,7 +191,7 @@
public void testDefaultContext() {
Element e = getTestElement("context");
BeanMetadata bean =
- (BeanMetadata) sut.decorate(e, Skeleton.newMock(BeanMetadata.class), parserCtx);
+ (BeanMetadata) sut.decorate(e, new BeanMetadataImpl(), parserCtx);
BeanMetadata innerBean = (BeanMetadata) ((BeanProperty) bean.getProperties().get(0)).getValue();
assertEquals("createEntityManager", innerBean.getFactoryMethod());
@@ -215,7 +215,7 @@
sut.contextUnavailable(null);
Element e = getTestElement("context");
BeanMetadata bean =
- (BeanMetadata) sut.decorate(e, Skeleton.newMock(BeanMetadata.class), parserCtx);
+ (BeanMetadata) sut.decorate(e, new BeanMetadataImpl(), parserCtx);
BeanMetadata innerBean = (BeanMetadata) ((BeanProperty) bean.getProperties().get(0)).getValue();
assertEquals("createEntityManager", innerBean.getFactoryMethod());
@@ -237,7 +237,7 @@
public void testContextWithProps() {
Element e = getTestElement("contextWithProps");
BeanMetadata bean =
- (BeanMetadata) sut.decorate(e, Skeleton.newMock(BeanMetadata.class), parserCtx);
+ (BeanMetadata) sut.decorate(e, new BeanMetadataImpl(), parserCtx);
BeanMetadata innerBean = (BeanMetadata) ((BeanProperty) bean.getProperties().get(0)).getValue();
assertEquals("createEntityManager", innerBean.getFactoryMethod());
@@ -258,10 +258,11 @@
}
@Test
- public void testExtendedMetadataProxying() {
+ public void testNoMoreProxying() {
Element e = getTestElement("contextWithProps");
- Object res = sut.decorate(e, Skeleton.newMock(ExtendedBeanMetadata.class), parserCtx);
- assertTrue(res instanceof ExtendedBeanMetadata);
+ BeanMetadata input = new BeanMetadataImpl();
+ Object output = sut.decorate(e, input, parserCtx);
+ assertTrue(input == output);
}
private Element getTestElement(String beanName) {