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

com.xdev.jadoth.codegen.java.codeobjects.JavaClassDefinition Maven / Gradle / Ivy

/*
 * XDEV Application Framework - XDEV Application Framework
 * Copyright © 2003 XDEV Software (https://xdev.software)
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program.  If not, see .
 */
package com.xdev.jadoth.codegen.java.codeobjects;

import static com.xdev.jadoth.codegen.java.codeobjects.JavaModifier.ABSTRACT;
import static com.xdev.jadoth.codegen.java.codeobjects.JavaModifier.FINAL;
import static com.xdev.jadoth.codegen.java.codeobjects.JavaModifier.STATIC;
import static com.xdev.jadoth.codegen.java.codeobjects.JavaModifier.VISIBILITY;

import java.lang.reflect.Type;
import java.util.LinkedHashSet;

import com.xdev.jadoth.codegen.java.Java;




/**
 * Represents a Java class.
 * 
 * @author Thomas Muenz
 *
 */
public interface JavaClassDefinition extends JavaClassDescription, JavaTypeDefinition
{
	public static final int VALID_MODIFIERS = VISIBILITY|STATIC|FINAL|ABSTRACT;
	
	public JavaClassDescription getSuperClassDescription();
	
	public boolean addInterface(JavaInterfaceDescription javaInterface);
	
	
//	public JavaClassDefinition implementS(JavaInterfaceDescription... superInterfaces);
//	public JavaClassDefinition implementS(Class... superInterfaces);
	
	public JavaClassDefinition implementS(Type... superInterfaces);
	
	public JavaClassDefinition extendS(JavaClassDescription superClass);
	public JavaClassDefinition extendS(Class superClass);
	
	
	public boolean add(JavaClassMemberDefinition member);
	
	public boolean add(JavaClassMemberDefinition... members);	

	public boolean addConstructor(JavaConstructorDescription javaConstructor);
	public boolean addInitializer(JavaInitializer javaInitializer);
	public boolean addStaticInitializer(JavaStaticInitializer javaStaticInitializer);
	
	
	
	
	public class Implementation extends JavaTypeDefinition.Implementation 
	implements JavaClassDefinition
	{
		///////////////////////////////////////////////////////////////////////////
		// instance fields  //
		/////////////////////
		
		private JavaClassDescription superClass = null;		
		private final LinkedHashSet classMembers = new LinkedHashSet();
		
		
		
		///////////////////////////////////////////////////////////////////////////
		// constructors //
		/////////////////
	
		/**
		 * @param modifiers
		 * @param name
		 */
		Implementation(final int modifiers, final String name)
		{
			super(modifiers, name);
		}


		/**
		 * @param javaConstructor
		 * @return
		 * @see com.xdev.jadoth.codegen.java.codeobjects.JavaClassDefinition#addConstructor(com.xdev.jadoth.codegen.java.codeobjects.JavaConstructorDescription)
		 */
		@Override
		public boolean addConstructor(final JavaConstructorDescription javaConstructor)
		{
			return false;
		}


		/**
		 * @param javaInitializer
		 * @return
		 * @see com.xdev.jadoth.codegen.java.codeobjects.JavaClassDefinition#addInitializer(com.xdev.jadoth.codegen.java.codeobjects.JavaInitializer)
		 */
		@Override
		public boolean addInitializer(final JavaInitializer javaInitializer)
		{
			return false;
		}


		/**
		 * @param javaInterface
		 * @return
		 * @see com.xdev.jadoth.codegen.java.codeobjects.JavaClassDefinition#addInterface(com.xdev.jadoth.codegen.java.codeobjects.JavaInterfaceDefinition)
		 */
		@Override
		public boolean addInterface(final JavaInterfaceDescription javaInterface)
		{
			return false;
		}



		/**
		 * @param javaStaticInitializer
		 * @return
		 * @see com.xdev.jadoth.codegen.java.codeobjects.JavaClassDefinition#addStaticInitializer(com.xdev.jadoth.codegen.java.codeobjects.JavaStaticInitializer)
		 */
		@Override
		public boolean addStaticInitializer(final JavaStaticInitializer javaStaticInitializer)
		{
			return javaStaticInitializer.setOwner(this);
		}


		@Override
		public Iterable iterateClassMembers()
		{
			return this.classMembers;
		}



		/**
		 * @return
		 * @see com.xdev.jadoth.codegen.java.codeobjects.JavaTypeDescription#getClassSignature()
		 */
		@Override
		public String getClassSignature()
		{
			return null;
		}






		/**
		 * @param javaMembers
		 * @return
		 */
		@Override
		public JavaClassDefinition.Implementation add(final JavaTypeMemberDefinition... javaMembers)
		{
			for(final JavaTypeMemberDefinition javaMemberDefinition : javaMembers) {
				javaMemberDefinition.registerAtOwner(this);
			}
			return this;
		}


		/**
		 * @param javaFields
		 * @return
		 */
		@Override
		public JavaClassDefinition.Implementation add(final JavaFieldDefinition... javaFields)
		{
			for(final JavaFieldDefinition javaField : javaFields) {
				javaField.registerAtOwner(this);
			}
			return this;
		}


		/**
		 * @param javaMethods
		 * @return
		 */
		@Override
		public JavaClassDefinition.Implementation add(final JavaMethodDefinition... javaMethods)
		{
			for(final JavaMethodDefinition javaMethod : javaMethods) {
				javaMethod.registerAtOwner(this);
			}
			return this;
		}


		/**
		 * @param javaNestedCompilationUnits
		 * @return
		 */
		@Override
		public JavaClassDefinition.Implementation add(final JavaTypeDefinition... javaNestedCompilationUnits)
		{
			for(final JavaTypeDefinition javaNestedCompilationUnit : javaNestedCompilationUnits) {
				javaNestedCompilationUnit.registerAtOwner(this);
			}
			return this;
		}


		/**
		 * @param javaNestedInterfaces
		 * @return
		 */
		@Override
		public JavaClassDefinition.Implementation add(final JavaInterfaceDefinition... javaNestedInterfaces)
		{
			for(final JavaInterfaceDefinition javaNestedInterface : javaNestedInterfaces) {
				javaNestedInterface.registerAtOwner(this);
			}
			return this;
		}





		/**
		 * @return
		 */
		@Override
		public JavaClassDescription getSuperClassDescription()
		{
			return this.superClass;
		}


		/**
		 * @param javaClass
		 * @return
		 */
		@Override
		public JavaClassDefinition.Implementation add(final JavaClassDefinition javaClass)
		{
			return this;
		}


		/**
		 * @param javaNestedClasss
		 * @return
		 */
		@Override
		public JavaClassDefinition.Implementation add(final JavaClassDefinition... javaNestedClasss)
		{
			for(final JavaClassDefinition javaNestedClass : javaNestedClasss) {
				javaNestedClass.registerAtOwner(this);
			}
			return this;
		}


		/**
		 * @return
		 */
		@Override
		public JavaTypeDescription getOwnerType()
		{
			return null;
		}


		/**
		 * @param compilationUnit
		 * @return
		 */
		@Override
		public void registerAtOwner(final JavaTypeDefinition compilationUnit)
		{
		}


		/**
		 * @param owner
		 */
		@Override
		public void setOwner(final JavaTypeDefinition owner)
		{
			
		}


		/**
		 * @return
		 */
		@Override
		public Iterable iterateConstructors()
		{
			return null;
		}

		/**
		 * @return
		 */
		@Override
		public Iterable iterateInitializers()
		{
			return null;
		}


		/**
		 * @return
		 * @see com.xdev.jadoth.codegen.java.codeobjects.JavaCompilationUnitMember#getOwnerCompilationUnit()
		 */
		@Override
		public JavaCompilationUnit getOwnerCompilationUnit()
		{
			return null;
		}


		/**
		 * @param compilationUnit
		 * @return
		 * @see com.xdev.jadoth.codegen.java.codeobjects.JavaCompilationUnitMember#registerAtOwner(JavaCompilationUnit)
		 */
		@Override
		public JavaCompilationUnitMember registerAtOwner(final JavaCompilationUnit compilationUnit)
		{
			compilationUnit.add(this);
			return this;
		}


		/**
		 * @param owner
		 * @see com.xdev.jadoth.codegen.java.codeobjects.JavaCompilationUnitMember#setOwner(JavaCompilationUnit)
		 */
		@Override
		public void setOwner(final JavaCompilationUnit owner)
		{
			
		}


		/**
		 * @param member
		 * @return
		 * @see com.xdev.jadoth.codegen.java.codeobjects.JavaClassDefinition#add(com.xdev.jadoth.codegen.java.codeobjects.JavaClassMemberDefinition)
		 */
		@Override
		public boolean add(final JavaClassMemberDefinition member)
		{
			return false;
		}


		/**
		 * @param members
		 * @return
		 * @see com.xdev.jadoth.codegen.java.codeobjects.JavaClassDefinition#add(com.xdev.jadoth.codegen.java.codeobjects.JavaClassMemberDefinition[])
		 */
		@Override
		public boolean add(final JavaClassMemberDefinition... members)
		{
			return false;
		}


		/**
		 * @return
		 * @see com.xdev.jadoth.codegen.java.codeobjects.JavaClassMemberDescription#getOwnerClass()
		 */
		@Override
		public JavaClassDefinition getOwnerClass()
		{
			return null;
		}


		/**
		 * @param javaClass
		 * @return
		 * @see com.xdev.jadoth.codegen.java.codeobjects.JavaClassMemberDefinition#setOwner(com.xdev.jadoth.codegen.java.codeobjects.JavaClassDefinition)
		 */
		@Override
		public boolean setOwner(final JavaClassDefinition javaClass)
		{
			return false;
		}


		/**
		 * @param superClass
		 * @return
		 * @see com.xdev.jadoth.codegen.java.codeobjects.JavaClassDefinition#extendS(com.xdev.jadoth.codegen.java.codeobjects.JavaClassDescription)
		 */
		@Override
		public JavaClassDefinition extendS(final JavaClassDescription superClass)
		{
			return null;
		}


//		/**
//		 * @param superInterfaces
//		 * @return
//		 * @see net.jadoth.codegen.java.codeobjects.JavaClassDefinition#implementS(net.jadoth.codegen.java.codeobjects.JavaInterfaceDescription[])
//		 */
//		@Override
//		public JavaClassDefinition implementS(final JavaInterfaceDescription... superInterfaces)
//		{
//			return null;
//		}


		/**
		 * @param superClass
		 * @return
		 * @see com.xdev.jadoth.codegen.java.codeobjects.JavaClassDefinition#extendS(java.lang.Class)
		 */
		@Override
		public JavaClassDefinition extendS(final Class superClass)
		{
			return null;
		}


		/**
		 * @param superInterfaces
		 * @return
		 * @see net.jadoth.codegen.java.codeobjects.JavaClassDefinition#implementS(java.lang.Class[])
		 */
		@Override
		public JavaClassDefinition implementS(final Type... superInterfaces)
		{
			return null;
		}


		/**
		 * @return always null
		 * @see java.lang.reflect.Member#getDeclaringClass()
		 */
		@Override
		public Class getDeclaringClass()
		{
			return null;
		}

		/**
		 * @return always false
		 * @see java.lang.reflect.Member#isSynthetic()
		 */
		@Override
		public boolean isSynthetic()
		{
			return false;
		}


		/**
		 * @param codeGenerator
		 * @see com.xdev.jadoth.codegen.java.codeobjects.JavaCodeAssembable#assemble(StringBuilder, com.xdev.jadoth.codegen.java.codeobjects.JavaCodeGenerator)
		 */
		@Override
		public void assemble(final StringBuilder sb, final JavaCodeGenerator codeGenerator)
		{
			codeGenerator.assembleJavaClassDefinition(sb, this);			
		}


		/**
		 * @return
		 * @see com.xdev.jadoth.codegen.java.codeobjects.JavaTypeDescription#getCanonicalName()
		 */
		@Override
		public String getCanonicalName()
		{
			return null;
		}


		/**
		 * @return
		 * @see com.xdev.jadoth.codegen.java.codeobjects.JavaTypeDescription#getSimpleName()
		 */
		@Override
		public String getSimpleName()
		{
			return null;
		}


		/**
		 * @return
		 * @see com.xdev.jadoth.codegen.java.codeobjects.JavaCompilationUnitMember#getAssociatedComment()
		 */
		@Override
		public JavaCommentBlock getAssociatedComment()
		{
			return null;
		}


		/**
		 * @return
		 * @see com.xdev.jadoth.codegen.java.codeobjects.JavaCompilationUnitMember#getJavaDoc()
		 */
		@Override
		public JavaDocBlock getJavaDoc()
		{
			return null;
		}


		/**
		 * @return
		 * @see com.xdev.jadoth.codegen.java.codeobjects.JavaTypeMemberDefinition#getNestingLevel()
		 */
		@Override
		public int getNestingLevel()
		{
			return 0;
		}


		/**
		 * @return
		 * @see com.xdev.jadoth.codegen.java.codeobjects.JavaKeywordOwner#getKeyword()
		 */
		@Override
		public String getKeyword()
		{
			return Java.Lang.$class;
		}


		

	}
	
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy