container/services/src/main/java/org/mobicents/slee/container/deployment/ConcreteSbbGenerator.java
protected void createGetChildRelationsMethod(
			Collection<GetChildRelationMethodDescriptor> childRelations) {
		if (childRelations == null)
			return;
		for (GetChildRelationMethodDescriptor childRelation : childRelations) {
			String methodName = childRelation.getChildRelationMethodName();
			CtMethod method = (CtMethod) abstractMethods.get(methodName);
			if (method == null) {
				method = (CtMethod) superClassesAbstractMethods.get(methodName);
			}
			if (method != null) {
				try {
					// copy method from abstract to concrete class
					CtMethod concreteMethod = CtNewMethod.copy(method,
							sbbConcreteClass, null);
					// create the method body
					String concreteMethodBody = "{ return "
							+ SbbAbstractMethodHandler.class.getName()
							+ ".getChildRelation(sbbEntity,\"" + methodName
							+ "\"); }";
					if (logger.isTraceEnabled()) {
			            logger.trace("Generated method " + methodName
								+ " , body = " + concreteMethodBody);
					}
					concreteMethod.setBody(concreteMethodBody);
					sbbConcreteClass.addMethod(concreteMethod);
				} catch (CannotCompileException cce) {
					throw new SLEEException("Cannot compile method "
							+ method.getName(), cce);
				}
			}
		}
	}
protected void createGetChildRelationsMethod(
			Collection<GetChildRelationMethodDescriptor> childRelations) {
		if (childRelations == null)
			return;
		for (GetChildRelationMethodDescriptor childRelation : childRelations) {
			String methodName = childRelation.getChildRelationMethodName();
			CtMethod method = (CtMethod) abstractMethods.get(methodName);
			if (method == null) {
				method = (CtMethod) superClassesAbstractMethods.get(methodName);
			}
			if (method != null) {
				try {
					// copy method from abstract to concrete class
					CtMethod concreteMethod = CtNewMethod.copy(method,
							sbbConcreteClass, null);
					// create the method body
					String concreteMethodBody = "{ return "
							+ SbbAbstractMethodHandler.class.getName()
							+ ".getChildRelation(sbbEntity,\"" + methodName
							+ "\"); }";
					if (logger.isTraceEnabled()) {
			            logger.trace("Generated method " + methodName
								+ " , body = " + concreteMethodBody);
					}
					concreteMethod.setBody(concreteMethodBody);
					sbbConcreteClass.addMethod(concreteMethod);
				} catch (CannotCompileException cce) {
					throw new SLEEException("Cannot compile method "
							+ method.getName(), cce);
				}
			}
		}
	}
protected void createGetChildRelationsMethod ( Collection < GetChildRelationMethodDescriptor > childRelations ) { if ( childRelations == null ) return ; for ( GetChildRelationMethodDescriptor childRelation : childRelations ) { String methodName = childRelation . getChildRelationMethodName ( ) ; CtMethod method = ( CtMethod ) abstractMethods . get ( methodName ) ; if ( method == null ) { method = ( CtMethod ) superClassesAbstractMethods . get ( methodName ) ; } if ( method != null ) { try { // copy method from abstract to concrete class CtMethod concreteMethod = CtNewMethod . copy ( method , sbbConcreteClass , null ) ; // create the method body String concreteMethodBody = "{ return " + SbbAbstractMethodHandler . class . getName ( ) + ".getChildRelation(sbbEntity,\"" + methodName + "\"); }" ; if ( logger . isTraceEnabled ( ) ) { logger . trace ( "Generated method " + methodName + " , body = " + concreteMethodBody ) ; } concreteMethod . setBody ( concreteMethodBody ) ; sbbConcreteClass . addMethod ( concreteMethod ) ; } catch ( CannotCompileException cce ) { throw new SLEEException ( "Cannot compile method " + method . getName ( ) , cce ) ; } } } }
Create the get child relation method (this method redirects the call to a
child relation interceptor)

@param childRelations
the childRelations method to add to the concrete class
Create the get child relation method ( this method redirects the call to a child relation interceptor )