Author: richard.opalka(a)jboss.com
Date: 2010-11-03 04:16:41 -0400 (Wed, 03 Nov 2010)
New Revision: 13207
Modified:
framework/trunk/src/main/java/org/jboss/wsf/framework/serviceref/DefaultServiceRefHandler.java
Log:
[JBWS-3152] refactoring
Modified:
framework/trunk/src/main/java/org/jboss/wsf/framework/serviceref/DefaultServiceRefHandler.java
===================================================================
---
framework/trunk/src/main/java/org/jboss/wsf/framework/serviceref/DefaultServiceRefHandler.java 2010-11-03
08:11:40 UTC (rev 13206)
+++
framework/trunk/src/main/java/org/jboss/wsf/framework/serviceref/DefaultServiceRefHandler.java 2010-11-03
08:16:41 UTC (rev 13207)
@@ -21,85 +21,47 @@
*/
package org.jboss.wsf.framework.serviceref;
-import javax.naming.Context;
-import javax.naming.NamingException;
import javax.naming.Referenceable;
import org.jboss.wsf.spi.SPIProvider;
import org.jboss.wsf.spi.SPIProviderResolver;
-import org.jboss.wsf.spi.deployment.UnifiedVirtualFile;
import org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedServiceRefMetaData;
import org.jboss.wsf.spi.serviceref.ServiceRefBinder;
import org.jboss.wsf.spi.serviceref.ServiceRefBinderFactory;
import org.jboss.wsf.spi.serviceref.ServiceRefHandler;
-import org.jboss.wsf.spi.serviceref.ServiceRefMetaData;
/**
- * Bind service refs in the client's ENC
- * for every service-ref element in the deployment descriptor.
+ * Binds service refs to the client's ENC.
*
- * @author Thomas.Diesler(a)jboss.org
- * @author Heiko.Braun(a)jboss.com
* @author <a href="mailto:ropalka@redhat.com">Richard Opalka</a>
- * @since 04-Nov-2006
*/
-public class DefaultServiceRefHandler implements ServiceRefHandler
+public final class DefaultServiceRefHandler implements ServiceRefHandler
{
@Override
- @Deprecated
- public void bindServiceRef(final Context encCtx, final String encName, final
UnifiedVirtualFile ignored,
- final ClassLoader loader, final ServiceRefMetaData serviceRefMD) throws
NamingException
+ public Referenceable createReferenceable(final UnifiedServiceRefMetaData
serviceRefMD)
{
- final UnifiedServiceRefMetaData serviceRefUMDM = (UnifiedServiceRefMetaData)
serviceRefMD;
- final Type bindingType = getServiceRefType(serviceRefUMDM, loader);
+ if (serviceRefMD.getVfsRoot() == null)
+ {
+ throw new IllegalStateException("VFSRoot must be provided");
+ }
+ final Type type = this.getServiceRefType(serviceRefMD);
- this.getBinder(bindingType).setupServiceRef(encCtx, encName, null, serviceRefUMDM,
loader);
+ return this.getBinder(type).createReferenceable(serviceRefMD);
}
-
- @Override
- public Referenceable createReferenceable(UnifiedServiceRefMetaData serviceRef,
ClassLoader loader)
+ private Type getServiceRefType(final UnifiedServiceRefMetaData serviceRefMD)
{
- final Type bindingType = getServiceRefType(serviceRef, loader);
+ final boolean isJAXRPC = serviceRefMD.getMappingFile() != null
+ ||
"javax.xml.rpc.Service".equals(serviceRefMD.getServiceInterface());
- return this.getBinder(bindingType).createReferenceable(serviceRef, loader);
+ return isJAXRPC ? Type.JAXRPC : Type.JAXWS;
}
- private ServiceRefBinder getBinder(final Type binderType)
+ private ServiceRefBinder getBinder(final Type type)
{
final SPIProvider spiProvider = SPIProviderResolver.getInstance().getProvider();
final ServiceRefBinderFactory serviceRefBindingFactory =
spiProvider.getSPI(ServiceRefBinderFactory.class);
- return serviceRefBindingFactory.newServiceRefBinder(binderType);
+ return serviceRefBindingFactory.newServiceRefBinder(type);
}
-
- private Type getServiceRefType(final UnifiedServiceRefMetaData serviceRef, final
ClassLoader loader)
- {
- // Both service-ref-type and annotated element are JAXWS specific
- if (serviceRef.getServiceRefType() != null || serviceRef.getAnnotatedElement() !=
null)
- return Type.JAXWS;
-
- // The mapping-file is JAXRPC specific
- if (serviceRef.getMappingFile() != null)
- return Type.JAXRPC;
-
- final String serviceInterfaceName = serviceRef.getServiceInterface();
- if (serviceInterfaceName == null)
- throw new IllegalStateException("<service-interface> cannot be
null");
-
- try
- {
- final Class<?> siClass = loader.loadClass(serviceInterfaceName);
- if (javax.xml.ws.Service.class.isAssignableFrom(siClass))
- return Type.JAXWS;
- else if (javax.xml.rpc.Service.class.isAssignableFrom(siClass))
- return Type.JAXRPC;
- else
- throw new IllegalStateException("Illegal service interface: " +
serviceInterfaceName);
- }
- catch (ClassNotFoundException e)
- {
- throw new IllegalStateException("Cannot load <service-interface>:
" + serviceInterfaceName);
- }
- }
}
Show replies by date