All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.aspectj.org.eclipse.jdt.internal.core.CreateInitializerOperation Maven / Gradle / Ivy

Go to download

AspectJ tools most notably contains the AspectJ compiler (AJC). AJC applies aspects to Java classes during compilation, fully replacing Javac for plain Java classes and also compiling native AspectJ or annotation-based @AspectJ syntax. Furthermore, AJC can weave aspects into existing class files in a post-compile binary weaving step. This library is a superset of AspectJ weaver and hence also of AspectJ runtime.

There is a newer version: 1.9.22.1
Show newest version
/*******************************************************************************
 * Copyright (c) 2000, 2008 IBM Corporation and others.
 *
 * This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package org.aspectj.org.eclipse.jdt.internal.core;

import org.aspectj.org.eclipse.jdt.core.ICompilationUnit;
import org.aspectj.org.eclipse.jdt.core.IJavaElement;
import org.aspectj.org.eclipse.jdt.core.IJavaModelStatusConstants;
import org.aspectj.org.eclipse.jdt.core.IType;
import org.aspectj.org.eclipse.jdt.core.JavaModelException;
import org.aspectj.org.eclipse.jdt.core.dom.ASTNode;
import org.aspectj.org.eclipse.jdt.core.dom.SimpleName;
import org.aspectj.org.eclipse.jdt.core.dom.rewrite.ASTRewrite;
import org.aspectj.org.eclipse.jdt.internal.core.util.Messages;

/**
 * 

This operation creates a initializer in a type. * *

Required Attributes:

    *
  • Containing Type *
  • The source code for the initializer. No verification of the source is * performed. *
*/ public class CreateInitializerOperation extends CreateTypeMemberOperation { /** * The current number of initializers in the parent type. * Used to retrieve the handle of the newly created initializer. */ protected int numberOfInitializers= 1; /** * When executed, this operation will create an initializer with the given name * in the given type with the specified source. * *

By default the new initializer is positioned after the last existing initializer * declaration, or as the first member in the type if there are no * initializers. */ public CreateInitializerOperation(IType parentElement, String source) { super(parentElement, source, false); } @Override protected ASTNode generateElementAST(ASTRewrite rewriter, ICompilationUnit cu) throws JavaModelException { ASTNode node = super.generateElementAST(rewriter, cu); if (node.getNodeType() != ASTNode.INITIALIZER) throw new JavaModelException(new JavaModelStatus(IJavaModelStatusConstants.INVALID_CONTENTS)); return node; } /** * @see CreateElementInCUOperation#generateResultHandle */ @Override protected IJavaElement generateResultHandle() { try { //update the children to be current getType().getCompilationUnit().close(); if (this.anchorElement == null) { return getType().getInitializer(this.numberOfInitializers); } else { IJavaElement[] children = getType().getChildren(); int count = 0; for (int i = 0; i < children.length; i++) { IJavaElement child = children[i]; if (child.equals(this.anchorElement)) { if (child .getElementType() == IJavaElement.INITIALIZER && this.insertionPolicy == CreateElementInCUOperation.INSERT_AFTER) { count++; } return getType().getInitializer(count); } else if (child.getElementType() == IJavaElement.INITIALIZER) { count++; } } } } catch (JavaModelException e) { // type doesn't exist: ignore } return null; } /** * @see CreateElementInCUOperation#getMainTaskName() */ @Override public String getMainTaskName(){ return Messages.operation_createInitializerProgress; } @Override protected SimpleName rename(ASTNode node, SimpleName newName) { return null; // intializer cannot be renamed } /** * By default the new initializer is positioned after the last existing initializer * declaration, or as the first member in the type if there are no * initializers. */ @Override protected void initializeDefaultPosition() { IType parentElement = getType(); try { IJavaElement[] elements = parentElement.getInitializers(); if (elements != null && elements.length > 0) { this.numberOfInitializers = elements.length; createAfter(elements[elements.length - 1]); } else { elements = parentElement.getChildren(); if (elements != null && elements.length > 0) { createBefore(elements[0]); } } } catch (JavaModelException e) { // type doesn't exist: ignore } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy