Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2006-2008 Web Cohesion
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with 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 org.codehaus.enunciate.modules.amf;
 
 
Base class for an AMF endpoint.

Author(s):
Ryan Heaton
 
 public abstract class AMFEndpointImpl {
 
   private final HashMap<StringMethodoperationNames2Methods = new HashMap<StringMethod>();
   protected Object serviceBean;
 
   protected AMFEndpointImpl(Object serviceBean) {
     this. = serviceBean;
 
 
     for (Method method : getServiceInterface().getMethods()) {
       String operationName = method.getName();
       WebMethod webMethodInfo = method.getAnnotation(WebMethod.class);
       
       // If the annotation exclude the method, don't add it to the possible operations.
       if ((webMethodInfo != null) && (webMethodInfo.exclude())) {
           continue;
       }
       else if ((webMethodInfo != null) && (!"".equals(webMethodInfo.operationName()))) {
         operationName = webMethodInfo.operationName();
       }
 
       this..put(operationNamemethod);
     }
   }

  
Invoke an operation on the underlying service bean. This will transform each of its AMF object parameters to JAXB object parameters and then invoke the JAX-WS service bean. The result will be transformed into an AMF object before being returned.

Parameters:
operationName The operation name.
params The (AMF) parameters.
Returns:
The (AMF) result of the invocation.
 
   protected final Object invokeOperation(String operationNameObject... paramsthrows Exception {
     Method method = this..get(operationName);
     if (method == null) {
       throw new NoSuchMethodError("No such method: " + operationName);
     }
     AMFMappingContext mappingContext = new AMFMappingContext();
 
     Type[] paramTypes = method.getGenericParameterTypes();
     if (paramTypes.length != params.length) {
       throw new IllegalArgumentException(String.format("Wrong number of parameters for operation '%s'.  Expected %s, got %s."operationNameparamTypes.lengthparams.length));
     }
 
     Object[] mappedParams = new Object[paramTypes.length];
     for (int i = 0; i < paramTypes.lengthi++) {
       AMFMapper mapper;
       if (params[iinstanceof AMFMapperAware) {
         mapper = ((AMFMapperAwareparams[i]).loadAMFMapper();
       }
       else {
         mapper = AMFMapperIntrospector.getAMFMapper(paramTypes[i]);
       }
       mappedParams[i] = mapper.toJAXB(params[i], mappingContext);
     }
 
     Object returnValue;
     try {
       returnValue = method.invoke(mappedParams);
     }
     catch (InvocationTargetException e) {
       Throwable targetException = e.getTargetException();
      if ((.isAuthenticationFailed(targetException)) || (.isAccessDenied(targetException))) {
        flex.messaging.security.SecurityException se = new SecurityException(new PropertyStringResourceLoader("flex.messaging.vendors"));
        se.setMessage(targetException.getMessage());
        throw se;
      }
      else {
        for (int i = 0; i < method.getExceptionTypes().lengthi++) {
          Class exceptionType = method.getExceptionTypes()[i];
          if (exceptionType.isInstance(targetException)) {
            throw (Exception) AMFMapperIntrospector.getAMFMapper(targetException.getClass(), exceptionType).toAMF(targetExceptionmappingContext);
          }
        }
      }
      if (targetException instanceof Error) {
        throw (ErrortargetException;
      }
      else {
        throw (ExceptiontargetException;
      }
    }
    if (method.getReturnType() != .) {
      returnValue = AMFMapperIntrospector.getAMFMapper(returnValue != null ? returnValue.getClass() : nullmethod.getGenericReturnType()).toAMF(returnValuemappingContext);
    }
    return returnValue;
  }

  
Set the security checker for this endpoint.

Parameters:
securityChecker The security checker.
  public void setSecurityChecker(SecurityExceptionChecker securityChecker) {
    this. = securityChecker;
  }

  
The service interface.

Returns:
The service interface.
  protected abstract Class getServiceInterface();
New to GrepCode? Check out our FAQ X