Skip to content
This repository was archived by the owner on May 12, 2021. It is now read-only.

Commit e1cc8a6

Browse files
committed
consolidated common code for "lists" of compositemodels
1 parent 468bd3d commit e1cc8a6

12 files changed

Lines changed: 120 additions & 237 deletions

File tree

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one
3+
* or more contributor license agreements. See the NOTICE file
4+
* distributed with this work for additional information
5+
* regarding copyright ownership. The ASF licenses this file
6+
* to you under the Apache License, Version 2.0 (the
7+
* "License"); you may not use this file except in compliance
8+
* with the License. You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing, software
13+
* distributed under the License is distributed on an "AS IS" BASIS,
14+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
* See the License for the specific language governing permissions and
16+
* limitations under the License.
17+
*
18+
*
19+
*/
20+
21+
package org.apache.polygene.runtime.composite;
22+
23+
import org.apache.polygene.api.util.HierarchicalVisitor;
24+
import org.apache.polygene.api.util.VisitableHierarchy;
25+
import org.apache.polygene.api.util.VisitableModelDescriptor;
26+
27+
import java.util.List;
28+
import java.util.stream.Stream;
29+
30+
public abstract class CompositesModel<MD extends VisitableModelDescriptor>
31+
implements VisitableHierarchy<Object, Object>
32+
{
33+
private final List<MD> compositeModels;
34+
35+
public CompositesModel( List<MD> compositeModels)
36+
{
37+
this.compositeModels = compositeModels;
38+
}
39+
40+
@Override
41+
public final <ThrowableType extends Throwable> boolean accept( HierarchicalVisitor<? super Object, ? super Object, ThrowableType> modelVisitor )
42+
throws ThrowableType
43+
{
44+
if( modelVisitor.visitEnter( this ) )
45+
{
46+
for( MD compositeModel : compositeModels)
47+
{
48+
if( !compositeModel.accept( modelVisitor ) )
49+
{
50+
break;
51+
}
52+
}
53+
}
54+
return modelVisitor.visitLeave( this );
55+
}
56+
57+
public final Stream<MD> stream()
58+
{
59+
return compositeModels.stream();
60+
}
61+
}

core/runtime/src/main/java/org/apache/polygene/runtime/composite/TransientsModel.java

Lines changed: 2 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -21,48 +21,14 @@
2121
package org.apache.polygene.runtime.composite;
2222

2323
import java.util.List;
24-
import java.util.stream.Stream;
25-
import org.apache.polygene.api.composite.TransientDescriptor;
26-
import org.apache.polygene.api.util.HierarchicalVisitor;
27-
import org.apache.polygene.api.util.VisitableHierarchy;
2824

2925
/**
3026
* JAVADOC
3127
*/
32-
public class TransientsModel
33-
implements VisitableHierarchy<Object, Object>
28+
public class TransientsModel extends CompositesModel<TransientModel>
3429
{
35-
private final List<TransientModel> transientModels;
36-
3730
public TransientsModel( List<TransientModel> transientModels )
3831
{
39-
this.transientModels = transientModels;
40-
}
41-
42-
public Stream<TransientModel> models()
43-
{
44-
return transientModels.stream();
45-
}
46-
47-
@Override
48-
public <ThrowableType extends Throwable> boolean accept( HierarchicalVisitor<? super Object, ? super Object, ThrowableType> modelVisitor )
49-
throws ThrowableType
50-
{
51-
if( modelVisitor.visitEnter( this ) )
52-
{
53-
for( TransientModel transientModel : transientModels )
54-
{
55-
if( !transientModel.accept( modelVisitor ) )
56-
{
57-
break;
58-
}
59-
}
60-
}
61-
return modelVisitor.visitLeave( this );
62-
}
63-
64-
public Stream<? extends TransientDescriptor> stream()
65-
{
66-
return transientModels.stream();
32+
super(transientModels);
6733
}
6834
}

core/runtime/src/main/java/org/apache/polygene/runtime/entity/EntitiesModel.java

Lines changed: 5 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -20,49 +20,19 @@
2020

2121
package org.apache.polygene.runtime.entity;
2222

23-
import java.util.List;
24-
import java.util.stream.Stream;
25-
import org.apache.polygene.api.entity.EntityDescriptor;
26-
import org.apache.polygene.api.util.HierarchicalVisitor;
2723
import org.apache.polygene.api.util.VisitableHierarchy;
24+
import org.apache.polygene.runtime.composite.CompositesModel;
25+
26+
import java.util.List;
2827

2928
/**
3029
* Model of entities in a particular Module.
3130
*/
32-
public class EntitiesModel
31+
public class EntitiesModel extends CompositesModel<EntityModel>
3332
implements VisitableHierarchy<Object, Object>
3433
{
35-
private final List<EntityModel> entityModels;
36-
3734
public EntitiesModel( List<EntityModel> entityModels )
3835
{
39-
this.entityModels = entityModels;
40-
}
41-
42-
public Stream<EntityModel> models()
43-
{
44-
return entityModels.stream();
45-
}
46-
47-
@Override
48-
public <ThrowableType extends Throwable> boolean accept( HierarchicalVisitor<? super Object, ? super Object, ThrowableType> modelVisitor )
49-
throws ThrowableType
50-
{
51-
if( modelVisitor.visitEnter( this ) )
52-
{
53-
for( EntityModel entityModel : entityModels )
54-
{
55-
if( !entityModel.accept( modelVisitor ) )
56-
{
57-
break;
58-
}
59-
}
60-
}
61-
return modelVisitor.visitLeave( this );
62-
}
63-
64-
public Stream<? extends EntityDescriptor> stream()
65-
{
66-
return entityModels.stream();
36+
super(entityModels);
6737
}
6838
}

core/runtime/src/main/java/org/apache/polygene/runtime/object/ObjectsModel.java

Lines changed: 5 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -20,43 +20,19 @@
2020

2121
package org.apache.polygene.runtime.object;
2222

23-
import java.util.List;
24-
import java.util.stream.Stream;
25-
import org.apache.polygene.api.util.HierarchicalVisitor;
2623
import org.apache.polygene.api.util.VisitableHierarchy;
24+
import org.apache.polygene.runtime.composite.CompositesModel;
25+
26+
import java.util.List;
2727

2828
/**
2929
* JAVADOC
3030
*/
31-
public class ObjectsModel
31+
public class ObjectsModel extends CompositesModel<ObjectModel>
3232
implements VisitableHierarchy<Object, Object>
3333
{
34-
private final List<ObjectModel> objectModels;
35-
3634
public ObjectsModel( List<ObjectModel> objectModels )
3735
{
38-
this.objectModels = objectModels;
39-
}
40-
41-
@Override
42-
public <ThrowableType extends Throwable> boolean accept( HierarchicalVisitor<? super Object, ? super Object, ThrowableType> visitor )
43-
throws ThrowableType
44-
{
45-
if( visitor.visitEnter( this ) )
46-
{
47-
for( ObjectModel objectModel : objectModels )
48-
{
49-
if( !objectModel.accept( visitor ) )
50-
{
51-
break;
52-
}
53-
}
54-
}
55-
return visitor.visitLeave( this );
56-
}
57-
58-
public Stream<ObjectModel> models()
59-
{
60-
return objectModels.stream();
36+
super(objectModels);
6137
}
6238
}

core/runtime/src/main/java/org/apache/polygene/runtime/service/ImportedServicesInstance.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public ImportedServicesInstance( ImportedServicesModel servicesModel,
5858

5959
public Stream<ImportedServiceModel> models()
6060
{
61-
return servicesModel.models();
61+
return servicesModel.stream();
6262
}
6363

6464
@Override
@@ -117,7 +117,7 @@ public void deregisterActivationEventListener( ActivationEventListener listener
117117

118118
public Stream<? extends ImportedServiceDescriptor> stream()
119119
{
120-
return servicesModel.models();
120+
return servicesModel.stream();
121121
}
122122

123123
public Stream<ServiceReference<?>> references()

core/runtime/src/main/java/org/apache/polygene/runtime/service/ImportedServicesModel.java

Lines changed: 11 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -20,58 +20,31 @@
2020

2121
package org.apache.polygene.runtime.service;
2222

23-
import java.util.ArrayList;
24-
import java.util.List;
25-
import java.util.stream.Stream;
2623
import org.apache.polygene.api.service.ServiceReference;
2724
import org.apache.polygene.api.structure.ModuleDescriptor;
28-
import org.apache.polygene.api.util.HierarchicalVisitor;
2925
import org.apache.polygene.api.util.VisitableHierarchy;
26+
import org.apache.polygene.runtime.composite.CompositesModel;
27+
28+
import java.util.List;
29+
import java.util.stream.Collectors;
3030

3131
/**
3232
* JAVADOC
3333
*/
34-
public class ImportedServicesModel
34+
public class ImportedServicesModel extends CompositesModel<ImportedServiceModel>
3535
implements VisitableHierarchy<Object, Object>
3636
{
37-
private List<ImportedServiceModel> importedServiceModels;
38-
3937
public ImportedServicesModel( List<ImportedServiceModel> importedServiceModels )
4038
{
41-
this.importedServiceModels = importedServiceModels;
39+
super(importedServiceModels);
4240
}
4341

4442
public ImportedServicesInstance newInstance( ModuleDescriptor module )
4543
{
46-
List<ServiceReference<?>> serviceReferences = new ArrayList<>();
47-
for( ImportedServiceModel serviceModel : importedServiceModels )
48-
{
49-
ImportedServiceReferenceInstance serviceReferenceInstance = new ImportedServiceReferenceInstance( serviceModel, module );
50-
serviceReferences.add( serviceReferenceInstance );
51-
}
52-
53-
return new ImportedServicesInstance( this, serviceReferences );
54-
}
55-
56-
@Override
57-
public <ThrowableType extends Throwable> boolean accept( HierarchicalVisitor<? super Object, ? super Object, ThrowableType> visitor )
58-
throws ThrowableType
59-
{
60-
if( visitor.visitEnter( this ) )
61-
{
62-
for( ImportedServiceModel importedServiceModel : importedServiceModels )
63-
{
64-
if( !importedServiceModel.accept( visitor ) )
65-
{
66-
break;
67-
}
68-
}
69-
}
70-
return visitor.visitLeave( this );
71-
}
72-
73-
public Stream<ImportedServiceModel> models()
74-
{
75-
return importedServiceModels.stream();
44+
List<ServiceReference<?>> serviceReferences = stream()
45+
.map(serviceModel -> new ImportedServiceReferenceInstance(serviceModel, module))
46+
.<ServiceReference<?>>map(ServiceReference.class::cast)
47+
.collect(Collectors.toList());
48+
return new ImportedServicesInstance(this, serviceReferences );
7649
}
7750
}

core/runtime/src/main/java/org/apache/polygene/runtime/service/ServicesInstance.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public ServicesInstance( ServicesModel servicesModel, List<ServiceReference<?>>
5656

5757
public Stream<? extends ServiceDescriptor> models()
5858
{
59-
return servicesModel.models();
59+
return servicesModel.stream();
6060
}
6161

6262
@Override
@@ -112,7 +112,7 @@ public void deregisterActivationEventListener( ActivationEventListener listener
112112

113113
public Stream<? extends ServiceDescriptor> descriptors()
114114
{
115-
return servicesModel.models();
115+
return servicesModel.stream();
116116
}
117117

118118
public Stream<ServiceReference<?>> references()

0 commit comments

Comments
 (0)