Author: rfeng
Date: Mon Nov  5 15:29:14 2007
New Revision: 592182

URL: http://svn.apache.org/viewvc?rev=592182&view=rev
Log:
Fix the class resolving issues that break the build

Modified:
    
incubator/tuscany/java/sca/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/xml/XQueryImplementationProcessor.java
    
incubator/tuscany/java/sca/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/xml/XQueryIntrospector.java

Modified: 
incubator/tuscany/java/sca/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/xml/XQueryImplementationProcessor.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/xml/XQueryImplementationProcessor.java?rev=592182&r1=592181&r2=592182&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/xml/XQueryImplementationProcessor.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/xml/XQueryImplementationProcessor.java
 Mon Nov  5 15:29:14 2007
@@ -114,13 +114,14 @@
        
        ResourceReference resourceRef = new 
ResourceReference(xqueryImplementation.getLocation());
        resourceRef = resolver.resolveModel(ResourceReference.class, 
resourceRef);
-       if (!resourceRef.isUnresolved())
-               throw new ContributionResolveException("Could not locate file: 
" + xqueryImplementation.getLocation());
+       if (resourceRef.isUnresolved()) {
+            throw new ContributionResolveException("Could not locate file: " + 
xqueryImplementation.getLocation());
+        }
        xqueryImplementation.setLocationURL(resourceRef.getResource());
 
         XQueryIntrospector introspector = new 
XQueryIntrospector(assemblyFactory, javaFactory);
 
-        boolean success = introspector.introspect(xqueryImplementation);
+        boolean success = introspector.introspect(xqueryImplementation, 
resolver);
 
         if (success) {
             xqueryImplementation.setUnresolved(false);

Modified: 
incubator/tuscany/java/sca/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/xml/XQueryIntrospector.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/xml/XQueryIntrospector.java?rev=592182&r1=592181&r2=592182&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/xml/XQueryIntrospector.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/xml/XQueryIntrospector.java
 Mon Nov  5 15:29:14 2007
@@ -39,6 +39,8 @@
 import org.apache.tuscany.sca.assembly.Property;
 import org.apache.tuscany.sca.assembly.Reference;
 import org.apache.tuscany.sca.assembly.Service;
+import org.apache.tuscany.sca.contribution.resolver.ClassReference;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
 import 
org.apache.tuscany.sca.contribution.service.ContributionResolveException;
 import org.apache.tuscany.sca.implementation.xquery.XQueryImplementation;
 import org.apache.tuscany.sca.interfacedef.InvalidInterfaceException;
@@ -63,7 +65,6 @@
 
     private AssemblyFactory assemblyFactory;
     private JavaInterfaceFactory javaFactory;
-    private ClassLoader cl;
 
     public XQueryIntrospector(AssemblyFactory assemblyFactory, 
JavaInterfaceFactory javaFactory) {
         super();
@@ -71,7 +72,7 @@
         this.javaFactory = javaFactory;
     }
 
-    public boolean introspect(XQueryImplementation xqueryImplementation) 
throws ContributionResolveException {
+    public boolean introspect(XQueryImplementation xqueryImplementation, 
ModelResolver resolver) throws ContributionResolveException {
         
         String xqExpression = null;
         try {
@@ -105,7 +106,7 @@
         xqueryImplementation.getCompiledExpressionsCache().put(xqExpression, 
exp);
 
         try {
-            introspectServicesAndReferences(xqueryImplementation, exp);
+            introspectServicesAndReferences(xqueryImplementation, exp, 
resolver);
         } catch (ClassNotFoundException e) {
             throw new ContributionResolveException(e);
         } catch (InvalidInterfaceException e) {
@@ -141,12 +142,23 @@
 
         return xqExpression;
     }
+    
+    private Class<?> resolveClass(ModelResolver resolver, String className) 
throws ClassNotFoundException {
+        ClassReference classReference = new ClassReference(className);
+        classReference = resolver.resolveModel(ClassReference.class, 
classReference);
+        Class<?> javaClass = classReference.getJavaClass();
+        if (javaClass == null) {
+            throw new ClassNotFoundException(className);
+        } else {
+            return javaClass;
+        }
+    }
 
     /**
      * From the compiled xquery expression get all namespaces and see if they
      * are services, references or properties declaraions
      */
-    private void introspectServicesAndReferences(XQueryImplementation 
xqueryImplementation, XQueryExpression exp)
+    private void introspectServicesAndReferences(XQueryImplementation 
xqueryImplementation, XQueryExpression exp, ModelResolver resolver)
         throws ClassNotFoundException, InvalidInterfaceException {
         StaticQueryContext compiledSqc = exp.getStaticContext();
         NamespaceResolver namespaceResolver = 
compiledSqc.getNamespaceResolver();
@@ -157,19 +169,19 @@
             if (uri.startsWith(SCA_SERVICE_PREFIX)) {
                 String serviceName = prefix;
                 String className = uri.substring(SCA_SERVICE_PREFIX.length());
-                Class<?> interfaze = cl.loadClass(className);
+                Class<?> interfaze = resolveClass(resolver, className);
                 Service theService = createService(interfaze, serviceName);
                 xqueryImplementation.getServices().add(theService);
             } else if (uri.startsWith(SCA_REFERENCE_PREFIX)) {
                 String referenceName = prefix;
                 String className = 
uri.substring(SCA_REFERENCE_PREFIX.length());
-                Class<?> interfaze = cl.loadClass(className);
+                Class<?> interfaze = resolveClass(resolver, className);
                 Reference theReference = createReference(interfaze, 
referenceName);
                 xqueryImplementation.getReferences().add(theReference);
             } else if (uri.startsWith(SCA_PROPERTY_JAVA_PREFIX)) {
                 String propertyName = prefix;
                 String className = 
uri.substring(SCA_PROPERTY_JAVA_PREFIX.length());
-                Class<?> clazz = cl.loadClass(className);
+                Class<?> clazz = resolveClass(resolver, className);
                 QName xmlType = JavaXMLMapper.getXMLType(clazz);
                 Property theProperty = createProperty(xmlType, propertyName);
                 xqueryImplementation.getProperties().add(theProperty);



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to