Author: rfeng
Date: Mon Nov 5 21:38:57 2007
New Revision: 592289
URL: http://svn.apache.org/viewvc?rev=592289&view=rev
Log:
Use the Resource/Class Reference resolver to resolve location and factory
Modified:
incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/ImportSDOProcessor.java
incubator/tuscany/java/sca/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/ImportSDOProcessorTestCase.java
Modified:
incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/ImportSDOProcessor.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/ImportSDOProcessor.java?rev=592289&r1=592288&r2=592289&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/ImportSDOProcessor.java
(original)
+++
incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/ImportSDOProcessor.java
Mon Nov 5 21:38:57 2007
@@ -25,7 +25,6 @@
import java.io.InputStream;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
-import java.net.URI;
import java.net.URL;
import javax.xml.namespace.QName;
@@ -35,7 +34,9 @@
import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
+import org.apache.tuscany.sca.contribution.resolver.ClassReference;
import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ResourceReference;
import org.apache.tuscany.sca.contribution.service.ContributionReadException;
import
org.apache.tuscany.sca.contribution.service.ContributionResolveException;
import org.apache.tuscany.sca.contribution.service.ContributionWriteException;
@@ -62,7 +63,7 @@
public ImportSDO read(XMLStreamReader reader) throws
ContributionReadException, XMLStreamException {
assert IMPORT_SDO.equals(reader.getName());
-
+
// FIXME: How do we associate the application HelperContext with the
one
// imported by the composite
ImportSDO importSDO = new
ImportSDO(SDOContextHelper.getDefaultHelperContext());
@@ -84,13 +85,18 @@
return importSDO;
}
- private void importFactory(ImportSDO importSDO) throws
ContributionResolveException {
+ private void importFactory(ImportSDO importSDO, ModelResolver resolver)
throws ContributionResolveException {
String factoryName = importSDO.getFactoryClassName();
if (factoryName != null) {
- //FIXME The classloader should be passed in
- ClassLoader cl = Thread.currentThread().getContextClassLoader();
+ ClassReference reference = new ClassReference(factoryName);
+ ClassReference resolved =
resolver.resolveModel(ClassReference.class, reference);
+ if (resolved == null || resolved.isUnresolved()) {
+ ContributionResolveException loaderException =
+ new ContributionResolveException("Fail to resolve class: "
+ factoryName);
+ throw loaderException;
+ }
try {
- Class<?> factoryClass = cl.loadClass(factoryName);
+ Class<?> factoryClass = resolved.getJavaClass();
register(factoryClass, importSDO.getHelperContext());
} catch (Exception e) {
throw new ContributionResolveException(e);
@@ -105,26 +111,24 @@
Method method = factory.getClass().getMethod("register", new Class[]
{HelperContext.class});
method.invoke(factory, new Object[] {helperContext});
-// HelperContext defaultContext = HelperProvider.getDefaultContext();
-// method.invoke(factory, new Object[] {defaultContext});
+ // HelperContext defaultContext =
HelperProvider.getDefaultContext();
+ // method.invoke(factory, new Object[] {defaultContext});
}
- private void importWSDL(ImportSDO importSDO) throws
ContributionResolveException {
+ private void importWSDL(ImportSDO importSDO, ModelResolver resolver)
throws ContributionResolveException {
String location = importSDO.getSchemaLocation();
if (location != null) {
try {
URL wsdlURL = null;
- URI uri = URI.create(location);
- if (uri.isAbsolute()) {
- wsdlURL = uri.toURL();
- }
- //FIXME The classloader should be passed in
- wsdlURL =
Thread.currentThread().getContextClassLoader().getResource(location);
- if (null == wsdlURL) {
- ContributionResolveException loaderException = new
ContributionResolveException(
-
"WSDL location error");
+ ResourceReference reference = new ResourceReference(location);
+ ResourceReference resolved =
resolver.resolveModel(ResourceReference.class, reference);
+ if (resolved == null || resolved.isUnresolved()) {
+ ContributionResolveException loaderException =
+ new ContributionResolveException("Fail to resolve
location: " + location);
throw loaderException;
}
+
+ wsdlURL = resolved.getResource();
InputStream xsdInputStream = wsdlURL.openStream();
try {
XSDHelper xsdHelper =
importSDO.getHelperContext().getXSDHelper();
@@ -152,8 +156,8 @@
}
public void resolve(ImportSDO importSDO, ModelResolver resolver) throws
ContributionResolveException {
- importFactory(importSDO);
- importWSDL(importSDO);
+ importFactory(importSDO, resolver);
+ importWSDL(importSDO, resolver);
if (!importSDO.isUnresolved()) {
resolver.addModel(importSDO);
}
Modified:
incubator/tuscany/java/sca/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/ImportSDOProcessorTestCase.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/ImportSDOProcessorTestCase.java?rev=592289&r1=592288&r2=592289&view=diff
==============================================================================
---
incubator/tuscany/java/sca/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/ImportSDOProcessorTestCase.java
(original)
+++
incubator/tuscany/java/sca/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/ImportSDOProcessorTestCase.java
Mon Nov 5 21:38:57 2007
@@ -26,6 +26,9 @@
import junit.framework.TestCase;
+import org.apache.tuscany.sca.contribution.resolver.ClassReference;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+
import com.example.ipo.sdo.SdoFactory;
/**
@@ -57,7 +60,9 @@
assertFalse(inited);
ImportSDO importSDO = loader.read(reader);
assertNotNull(importSDO);
- loader.resolve(importSDO, new TestModelResolver());
+ ModelResolver resolver = new TestModelResolver();
+ resolver.addModel(new ClassReference(MockFactory.class));
+ loader.resolve(importSDO, resolver);
assertTrue(inited);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]