Package com.subhajit.diagram.sequencediagram.model

Examples of com.subhajit.diagram.sequencediagram.model.SequenceDiagramModel


    if (methodStack.contains(method)) {
      sLog.fine("methodStack contains method. Returning.");
      return null;
    }
    methodStack.add(method);
    SequenceDiagramModel model = new SequenceDiagramModel();
    model.setTitle(method.toString());

    ImmutableActor srcActor = new ImmutableActor(method.getClassName()
        .replace('.', '_'), CommonUtils.getClassNameSansPackage(method
        .getClassName())
        + "." + method.getMethodName());

    model.addActor(srcActor);

    List<Instruction> code = classInfo.getMethodCode(method);
    LineNumberTable lineNumberTable = classInfo.getLineNumberTable(method);
    LineNumber[] lineNumbers = null;
    if (lineNumberTable != null) {
      lineNumbers = lineNumberTable.getLineNumberTable();
    }

    for (Instruction line : code) {
      if (line instanceof InvokeInstruction) {
        sLog.fine("InvokeInstruction - " + line.toString());
        InvokeInstruction destInvokeInstruction = (InvokeInstruction) line;
        final String invokedClassName = destInvokeInstruction
            .getInvokedClass();

        // Check if this is a class of interest.
        if (filters != null) {
          if (!checkPackageMatch(filters, invokedClassName)) {
            sLog
                .fine("Returning, since this class is not interesting.");
            continue;
          }
        }

        final ImmutableActor destActor = new ImmutableActor(
            generateSequenceDiagramActorRef(destInvokeInstruction),
            CommonUtils
                .getClassNameSansPackage(destInvokeInstruction
                    .getInvokedClass())
                + "."
                + destInvokeInstruction.getInvokedMethod());
        model.addMessage(new ImmutableMessage(srcActor, destActor,
            generateSequenceDiagramMessage(destInvokeInstruction),
            destInvokeInstruction.getInvokedMethodReturnType()));

        // Experimentally, at this point, add a sequence diagram model
        // for the destActor's invoked method.
        if (followMethodCalls) {
          sLog.fine(" method calls");
          try {
            MethodInfo destMethod = new MethodInfo(
                invokedClassName, destInvokeInstruction
                    .getInvokedMethod(),
                Utility.methodSignatureArgumentTypes(
                    destInvokeInstruction
                        .getInvokedMethodSignature(),
                    false),
                Utility.methodSignatureReturnType(
                    destInvokeInstruction
                        .getInvokedMethodSignature(),
                    false), null);

            if (!methodStack.contains(destMethod)) {
              // methodStack.add(destMethod);

              sLog.info("Following - "
                  + destMethod.getClassName() + "."
                  + destMethod.getMethodName());

              SequenceDiagramContext ctx2 = new SequenceDiagramContext();
              ctx2.setClassInfo(new ClassInfo(invokedClassName,
                  getClassLoader()));
              ctx2.setFilters(ctx.getFilters());
              ctx2.setFollowInvokedMethods(ctx
                  .getFollowInvokedMethods());
              ctx2.setMethodInfo(destMethod);
              ctx2.setShowInstructions(ctx.getShowInstructions());
              ctx2.setShowSourceLines(ctx.getShowSourceLines());
              ctx2.setSourceCodeManager(ctx
                  .getSourceCodeManager());
              SequenceDiagramModel destActorInvocationModel = generateSequenceDiagramModel(
                  ctx2, methodStack);
              if (destActorInvocationModel != null) {
                model.merge(destActorInvocationModel);
              }
            }
View Full Code Here


    if (methodStack.contains(method)) {
      sLog.fine("methodStack contains method. Returning.");
      return null;
    }
    methodStack.add(method);
    SequenceDiagramModel model = new SequenceDiagramModel();
    model.setTitle(method.toString());

    ImmutableActor srcActor = new ImmutableActor(method.getClassName()
        .replace('.', '_'), CommonUtils.getClassNameSansPackage(method
        .getClassName())
        + "." + method.getMethodName());

    model.addActor(srcActor);

    final Map<MethodInfo, Code> codeMap = digest.load(className);
    if (codeMap.get(method) == null) {
      return model;
    }
    final List<Instruction> code = ClassReflectionUtils
        .computeInstructions(codeMap.get(method));
    final LineNumberTable lineNumberTable = JavaClassProcessor
        .getLineNumberTable(codeMap.get(method));
    LineNumber[] lineNumbers = null;
    if (lineNumberTable != null) {
      lineNumbers = lineNumberTable.getLineNumberTable();
    }

    for (Instruction line : code) {
      if (line instanceof InvokeInstruction) {
        InvokeInstruction destInvokeInstruction = (InvokeInstruction) line;
        final String invokedClassName = destInvokeInstruction
            .getInvokedClass();

        // Check if this is a class of interest.
        if (filters != null) {
          if (!checkPackageMatch(filters, invokedClassName)) {
            sLog.fine("Not analyzing - " + invokedClassName);
            continue;
          }
        }

        final ImmutableActor destActor = new ImmutableActor(
            generateSequenceDiagramActorRef(destInvokeInstruction),
            CommonUtils
                .getClassNameSansPackage(destInvokeInstruction
                    .getInvokedClass())
                + "."
                + destInvokeInstruction.getInvokedMethod());
        model.addMessage(new ImmutableMessage(srcActor, destActor,
            generateSequenceDiagramMessage(destInvokeInstruction),
            destInvokeInstruction.getInvokedMethodReturnType()));

        // Experimentally, at this point, add a sequence diagram model
        // for the destActor's invoked method.
        if (followInvokedMethods) {
          try {
            MethodInfo destMethod = new MethodInfo(
                invokedClassName, destInvokeInstruction
                    .getInvokedMethod(),
                Utility.methodSignatureArgumentTypes(
                    destInvokeInstruction
                        .getInvokedMethodSignature(),
                    false),
                Utility.methodSignatureReturnType(
                    destInvokeInstruction
                        .getInvokedMethodSignature(),
                    false), null);

            if (!methodStack.contains(destMethod)) {
              // methodStack.add(destMethod);

              sLog.info("Following - "
                  + destMethod.getClassName() + "."
                  + destMethod.getMethodName());

              SequenceDiagramModel destActorInvocationModel = generateSequenceDiagramModel(
                  destMethod.getClassName(), destMethod,
                  methodStack, followInvokedMethods,
                  showInstructions, showSourceCode,
                  srcCodeManager, filters);
              if (destActorInvocationModel != null) {
View Full Code Here

    if (methodStack.contains(method)) {
      sLog.fine("methodStack contains method. Returning.");
      return null;
    }
    methodStack.add(method);
    SequenceDiagramModel model = new SequenceDiagramModel();
    model.setTitle(method.toString());

    ImmutableActor srcActor = new ImmutableActor(method.getClassName()
        .replace('.', '_'), CommonUtils.getClassNameSansPackage(method
        .getClassName())
        + "." + method.getMethodName());

    model.addActor(srcActor);

    final Map<MethodInfo, Code> codeMap = digest.load(className);
    if (codeMap.get(method) == null) {
      return model;
    }
    final List<Instruction> code = JavaClassProcessor
        .computeInstructions(codeMap.get(method));
    final LineNumberTable lineNumberTable = JavaClassProcessor
        .getLineNumberTable(codeMap.get(method));
    LineNumber[] lineNumbers = null;
    if (lineNumberTable != null) {
      lineNumbers = lineNumberTable.getLineNumberTable();
    }

    for (Instruction line : code) {
      if (line instanceof InvokeInstruction) {
        InvokeInstruction destInvokeInstruction = (InvokeInstruction) line;
        final String invokedClassName = destInvokeInstruction
            .getInvokedClass();

        // Check if this is a class of interest.
        if (filters != null) {
          if (!checkPackageMatch(filters, invokedClassName)) {
            sLog.fine("Not analyzing - " + invokedClassName);
            continue;
          }
        }

        final ImmutableActor destActor = new ImmutableActor(
            generateSequenceDiagramActorRef(destInvokeInstruction),
            CommonUtils
                .getClassNameSansPackage(destInvokeInstruction
                    .getInvokedClass())
                + "."
                + destInvokeInstruction.getInvokedMethod());
        model.addMessage(new ImmutableMessage(srcActor, destActor,
            generateSequenceDiagramMessage(destInvokeInstruction),
            destInvokeInstruction.getInvokedMethodReturnType()));

        // Experimentally, at this point, add a sequence diagram model
        // for the destActor's invoked method.
        if (followInvokedMethods) {
          try {
            MethodInfo destMethod = new MethodInfo(
                invokedClassName, destInvokeInstruction
                    .getInvokedMethod(),
                Utility.methodSignatureArgumentTypes(
                    destInvokeInstruction
                        .getInvokedMethodSignature(),
                    false),
                Utility.methodSignatureReturnType(
                    destInvokeInstruction
                        .getInvokedMethodSignature(),
                    false), null);

            if (!methodStack.contains(destMethod)) {
              // methodStack.add(destMethod);

              sLog.info("Following - "
                  + destMethod.getClassName() + "."
                  + destMethod.getMethodName());

              SequenceDiagramModel destActorInvocationModel = generateSequenceDiagramModel(
                  destMethod.getClassName(), destMethod,
                  methodStack, followInvokedMethods,
                  showInstructions, showSourceCode,
                  srcCodeManager, filters);
              if (destActorInvocationModel != null) {
View Full Code Here

    if (methodStack.contains(method)) {
      sLog.fine("methodStack contains method. Returning.");
      return null;
    }
    methodStack.add(method);
    SequenceDiagramModel model = new SequenceDiagramModel();
    model.setTitle(method.toString());

    ImmutableActor srcActor = new ImmutableActor(method.getClassName()
        .replace('.', '_'), CommonUtils.getClassNameSansPackage(method
        .getClassName())
        + "." + method.getMethodName());

    model.addActor(srcActor);

    List<Instruction> code = classInfo.getMethodCode(method);
    LineNumberTable lineNumberTable = classInfo.getLineNumberTable(method);
    LineNumber[] lineNumbers = null;
    if (lineNumberTable != null) {
      lineNumbers = lineNumberTable.getLineNumberTable();
    }

    for (Instruction line : code) {
      if (line instanceof InvokeInstruction) {
        sLog.fine("InvokeInstruction - " + line.toString());
        InvokeInstruction destInvokeInstruction = (InvokeInstruction) line;
        final String invokedClassName = destInvokeInstruction
            .getInvokedClass();

        // Check if this is a class of interest.
        if (filters != null) {
          if (!checkPackageMatch(filters, invokedClassName)) {
            sLog
                .fine("Returning, since this class is not interesting.");
            continue;
          }
        }

        final ImmutableActor destActor = new ImmutableActor(
            generateSequenceDiagramActorRef(destInvokeInstruction),
            CommonUtils
                .getClassNameSansPackage(destInvokeInstruction
                    .getInvokedClass())
                + "."
                + destInvokeInstruction.getInvokedMethod());
        model.addMessage(new ImmutableMessage(srcActor, destActor,
            generateSequenceDiagramMessage(destInvokeInstruction),
            destInvokeInstruction.getInvokedMethodReturnType()));

        // Experimentally, at this point, add a sequence diagram model
        // for the destActor's invoked method.
        if (followMethodCalls) {
          sLog.fine(" method calls");
          try {
            MethodInfo destMethod = new MethodInfo(
                invokedClassName, destInvokeInstruction
                    .getInvokedMethod(),
                Utility.methodSignatureArgumentTypes(
                    destInvokeInstruction
                        .getInvokedMethodSignature(),
                    false),
                Utility.methodSignatureReturnType(
                    destInvokeInstruction
                        .getInvokedMethodSignature(),
                    false), null);

            if (!methodStack.contains(destMethod)) {
              // methodStack.add(destMethod);

              sLog.info("Following - "
                  + destMethod.getClassName() + "."
                  + destMethod.getMethodName());

              SequenceDiagramContext ctx2 = new SequenceDiagramContext();
              ctx2.setClassInfo(new ClassInfo(invokedClassName,
                  getClassLoader()));
              ctx2.setFilters(ctx.getFilters());
              ctx2.setFollowInvokedMethods(ctx
                  .getFollowInvokedMethods());
              ctx2.setMethodInfo(destMethod);
              ctx2.setShowInstructions(ctx.getShowInstructions());
              ctx2.setShowSourceLines(ctx.getShowSourceLines());
              ctx2.setSourceCodeManager(ctx
                  .getSourceCodeManager());
              SequenceDiagramModel destActorInvocationModel = generateSequenceDiagramModel(
                  ctx2, methodStack);
              if (destActorInvocationModel != null) {
                model.merge(destActorInvocationModel);
              }
            }
View Full Code Here

TOP

Related Classes of com.subhajit.diagram.sequencediagram.model.SequenceDiagramModel

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.