EJB3WebServiceOperationFacadeLogicImpl.java
package org.andromda.cartridges.ejb3.metafacades;
import org.andromda.cartridges.ejb3.EJB3Profile;
import org.andromda.metafacades.uml.ParameterFacade;
import org.andromda.metafacades.uml.UMLProfile;
import org.apache.commons.lang.BooleanUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
/**
* MetafacadeLogic implementation for org.andromda.cartridges.ejb3.metafacades.EJB3WebServiceOperationFacade.
*
* @see EJB3WebServiceOperationFacade
*/
public class EJB3WebServiceOperationFacadeLogicImpl
extends EJB3WebServiceOperationFacadeLogic
{
private static final long serialVersionUID = 34L;
/**
* The logger instance.
*/
private static final Logger logger = Logger.getLogger(EJB3WebServiceOperationFacadeLogicImpl.class);
/**
* @param metaObject
* @param context
*/
public EJB3WebServiceOperationFacadeLogicImpl(final Object metaObject, final String context)
{
super (metaObject, context);
}
/**
* @see EJB3WebServiceOperationFacade#isExposed()
*/
@Override
protected boolean handleIsExposed()
{
return this.getOwner().hasStereotype(UMLProfile.STEREOTYPE_WEBSERVICE) ||
this.hasStereotype(UMLProfile.STEREOTYPE_WEBSERVICE_OPERATION);
}
/**
* @see EJB3WebServiceOperationFacadeLogic#handleIsOneway()
*/
@Override
protected boolean handleIsOneway()
{
return BooleanUtils.toBoolean(
(String)this.findTaggedValue(EJB3Profile.TAGGEDVALUE_WEBSERVICE_OPERATION_ONEWAY));
}
/**
* @see EJB3WebServiceOperationFacadeLogic#getAnnotatedSignature()
*/
@Override
protected String handleGetAnnotatedSignature()
{
final StringBuilder signature = new StringBuilder(this.getName());
signature.append("(");
signature.append(this.getAnnotatedTypedArgumentList(true, null));
signature.append(")");
return signature.toString();
}
/**
* @param withArgumentNames
* @param modifier
* @return
*/
private String getAnnotatedTypedArgumentList(final boolean withArgumentNames, final String modifier)
{
final StringBuilder buffer = new StringBuilder();
boolean commaNeeded = false;
for (ParameterFacade paramter : this.getArguments())
{
String type = null;
if (paramter.getType() == null)
{
EJB3WebServiceOperationFacadeLogicImpl.logger.error(
"ERROR! No type specified for parameter --> '" + paramter.getName() +
"' on operation --> '" +
this.getName() +
"', please check your model");
}
else
{
type = paramter.getGetterSetterTypeName();
}
if (commaNeeded)
{
buffer.append(",");
}
buffer.append('\n');
// Add WebParam annotation
if (withArgumentNames)
{
buffer.append(" @javax.jws.WebParam(name = \"");
buffer.append(StringUtils.capitalize(paramter.getName())).append("\")");
buffer.append(" ");
}
if (StringUtils.isNotBlank(modifier))
{
buffer.append(modifier);
buffer.append(" ");
}
buffer.append(type);
if (withArgumentNames)
{
buffer.append(" ");
buffer.append(paramter.getName());
}
commaNeeded = true;
}
buffer.append('\n');
if (commaNeeded)
{
buffer.append(" ");
}
return buffer.toString();
}
/**
* @see EJB3WebServiceOperationFacadeLogic#handleGetMethodName()
*/
@Override
protected String handleGetMethodName()
{
String methodName = (String)this.findTaggedValue(EJB3Profile.TAGGEDVALUE_WEBSERVICE_OPERATION_NAME);
if (StringUtils.isBlank(methodName))
{
methodName = StringUtils.capitalize(this.getName());
}
return methodName;
}
/**
* @see EJB3WebServiceOperationFacadeLogic#handleGetResultName()
*/
@Override
protected String handleGetResultName()
{
return (String)this.findTaggedValue(EJB3Profile.TAGGEDVALUE_WEBSERVICE_OPERATION_RESULT_NAME);
}
}