Creating an Abstract Class
You can create an abstract class in the Project Explorer view.
Procedure
- In the Project Explorer view, copy the component implementation class and add the prefix Abstract to the class name of the copy. For example, if the component class is named ClassName, then rename the copy to AbstractClassName.
 -  
		  Edit the abstract component implementation class 
			 AbstractClassName. 
		   
		  
 -  
		  Edit the component implementation class 
			 ClassName. 
		   
		  
- ClassName implements one or more port types. Replace all the implements declarations with extends AbstractClassName.
 - Remove all reference and property declarations and all accessor methods from the component implementation class.
 - Edit method implementations to use accessor methods for property and reference objects.
 -  
				If any of the 
				  import statements displays a warning icon 
				  
, left-click the icon and click 
				  Organize imports: in the pop-up that
				  displays. 
				  
 - Save the concrete class.
 
 
Example
Before Concrete Class
public class Foo implements Calculator, AreaService {
        public CalculatorOutputDocument add(CalculatorInputDocument input) 
        {
                
                return CalculatorOutputDocument.Factory.newInstance();
        }
        public CalculatorOutputDocument divide(CalculatorInputDocument input) 
        {
                
                return CalculatorOutputDocument.Factory.newInstance();
        }
        public CalculatorOutputDocument multiply(CalculatorInputDocument input) 
        {
                
                return CalculatorOutputDocument.Factory.newInstance();
        }
        public CalculatorOutputDocument substract(CalculatorInputDocument input) 
        {
                
                return CalculatorOutputDocument.Factory.newInstance();
        }
        @Reference
        Phonebook Reference1;
        public Phonebook getReference1() 
        {
                return Reference1;
        }
        public void setReference1(Phonebook Reference1) 
        {
                this.Reference1 = Reference1;
        }
        @Reference
        AreaService Reference2;
        public AreaService getReference2() 
        {
                return Reference2;
        }
        public void setReference2(AreaService Reference2) 
        {
                this.Reference2 = Reference2;
        }
        public AreaDocument calculateRectArea(ParametersDocument parameters) 
        {
                
                return AreaDocument.Factory.newInstance();
        }
        @Property
        String MyProperty1;
        public String getMyProperty1() 
        {
                return MyProperty1;
        }
        public void setMyProperty1(String MyProperty1) 
        {
                this.MyProperty1 = MyProperty1;
        }
        @Property
        String MyProperty2;
        public String getMyProperty2() 
        {
                return MyProperty2;
        }
        public void setMyProperty2(String MyProperty2) 
        {
                this.MyProperty2 = MyProperty2;
        }
}
 
		After Abstract Class
/**
 * @Generated TEMPL003
 */
public abstract class AbstractFoo implements Calculator, AreaService 
{
        @Reference
        private Phonebook Reference1;
        public Phonebook getReference1() 
        {
                return Reference1;
        }
        public void setReference1(Phonebook Reference1) 
        {
                this.Reference1 = Reference1;
        }
        @Reference
        private AreaService Reference2;
        public AreaService getReference2() 
        {
                return Reference2;
        }
        public void setReference2(AreaService Reference2) 
        {
                this.Reference2 = Reference2;
        }
        @Property
        private String MyProperty1;
        public String getMyProperty1() 
        {
                return MyProperty1;
        }
        public void setMyProperty1(String MyProperty1) 
        {
                this.MyProperty1 = MyProperty1;
        }
        @Property
        private String MyProperty2;
        public String getMyProperty2() 
        {
                return MyProperty2;
        }
        public void setMyProperty2(String MyProperty2) 
        {
                this.MyProperty2 = MyProperty2;
        }
        public abstract CalculatorOutputDocument add(CalculatorInputDocument input);
        public abstract CalculatorOutputDocument divide(CalculatorInputDocument input);
        public abstract CalculatorOutputDocument multiply(CalculatorInputDocument input);
        public abstract CalculatorOutputDocument substract(CalculatorInputDocument input);
        public abstract AreaDocument calculateRectArea(ParametersDocument parameters);
}
 
		After Concrete Class
public class Foo extends AbstractFoo 
{
        public CalculatorOutputDocument add(CalculatorInputDocument input) 
        {
                
                return CalculatorOutputDocument.Factory.newInstance();
        }
        public CalculatorOutputDocument divide(CalculatorInputDocument input) 
        {
                
                return CalculatorOutputDocument.Factory.newInstance();
        }
        public CalculatorOutputDocument multiply(CalculatorInputDocument input) 
        {
                
                return CalculatorOutputDocument.Factory.newInstance();
        }
        public CalculatorOutputDocument substract(CalculatorInputDocument input) 
        {
                
                return CalculatorOutputDocument.Factory.newInstance();
        }
        public AreaDocument calculateRectArea(ParametersDocument parameters) 
        {
                
                return AreaDocument.Factory.newInstance();
        }
}
 
	 Copyright © 2022. Cloud Software Group, Inc. All Rights Reserved. 
