You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by jb...@apache.org on 2006/05/04 00:23:08 UTC
svn commit: r399459 - in /incubator/tuscany/sandbox/jboynes/sca:
core2/src/main/java/org/apache/tuscany/core/builder/
model/src/main/java/org/apache/tuscany/model/
spi/src/main/java/org/apache/tuscany/spi/builder/
Author: jboynes
Date: Wed May 3 15:23:05 2006
New Revision: 399459
URL: http://svn.apache.org/viewcvs?rev=399459&view=rev
Log:
add binding builder support to spi
Added:
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/builder/BindingBuilder.java (with props)
Modified:
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java
incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/BoundReference.java
incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/BoundService.java
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/builder/BuilderRegistry.java
Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java?rev=399459&r1=399458&r2=399459&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java Wed May 3 15:23:05 2006
@@ -21,10 +21,12 @@
import java.util.HashMap;
import java.util.Map;
+import org.apache.tuscany.model.Binding;
import org.apache.tuscany.model.BoundReference;
import org.apache.tuscany.model.BoundService;
import org.apache.tuscany.model.Component;
import org.apache.tuscany.model.Implementation;
+import org.apache.tuscany.spi.builder.BindingBuilder;
import org.apache.tuscany.spi.builder.BuilderRegistry;
import org.apache.tuscany.spi.builder.ComponentBuilder;
import org.apache.tuscany.spi.builder.WireBuilder;
@@ -38,10 +40,10 @@
*/
public class BuilderRegistryImpl implements BuilderRegistry {
private final Map<Class<? extends Implementation<?>>, ComponentBuilder<? extends Implementation<?>>> componentBuilders = new HashMap<Class<? extends Implementation<?>>, ComponentBuilder<? extends Implementation<?>>>();
+ private final Map<Class<? extends Binding>, BindingBuilder<? extends Binding>> bindingBuilders = new HashMap<Class<? extends Binding>, BindingBuilder<? extends Binding>>();
public <I extends Implementation<?>> void register(ComponentBuilder<I> builder) {
- Class<?> aClass = builder.getClass();
- Type[] interfaces = aClass.getGenericInterfaces();
+ Type[] interfaces = builder.getClass().getGenericInterfaces();
for (Type type : interfaces) {
if (! (type instanceof ParameterizedType)) {
continue;
@@ -61,21 +63,46 @@
componentBuilders.put(implClass, builder);
}
- public void register(WireBuilder builder) {
- throw new UnsupportedOperationException();
- }
-
public <I extends Implementation<?>> Context build(CompositeContext parent, Component<I> component) {
Class<I> implClass = (Class<I>) component.getImplementation().getClass();
ComponentBuilder<I> componentBuilder = (ComponentBuilder<I>) componentBuilders.get(implClass);
return componentBuilder.build(parent, component);
}
- public Context build(CompositeContext parent, BoundService boundService) {
- throw new UnsupportedOperationException();
+ public <B extends Binding> void register(BindingBuilder<B> builder) {
+ Type[] interfaces = builder.getClass().getGenericInterfaces();
+ for (Type type : interfaces) {
+ if (! (type instanceof ParameterizedType)) {
+ continue;
+ }
+ ParameterizedType interfaceType = (ParameterizedType) type;
+ if (!BindingBuilder.class.equals(interfaceType.getRawType())) {
+ continue;
+ }
+ Class<B> implClass = (Class<B>) interfaceType.getActualTypeArguments()[0];
+ register(implClass, builder);
+ return;
+ }
+ throw new IllegalArgumentException("builder is not generified");
+ }
+
+ public <B extends Binding> void register(Class<B> implClass, BindingBuilder<B> builder) {
+ bindingBuilders.put(implClass, builder);
}
- public Context build(CompositeContext parent, BoundReference boundReference) {
+ public <B extends Binding> Context build(CompositeContext parent, BoundService<B> boundService) {
+ Class<B> bindingClass = (Class<B>) boundService.getBinding().getClass();
+ BindingBuilder<B> bindingBuilder = (BindingBuilder<B>) bindingBuilders.get(bindingClass);
+ return bindingBuilder.build(parent, boundService);
+ }
+
+ public <B extends Binding> Context build(CompositeContext parent, BoundReference<B> boundReference) {
+ Class<B> bindingClass = (Class<B>) boundReference.getBinding().getClass();
+ BindingBuilder<B> bindingBuilder = (BindingBuilder<B>) bindingBuilders.get(bindingClass);
+ return bindingBuilder.build(parent, boundReference);
+ }
+
+ public void register(WireBuilder builder) {
throw new UnsupportedOperationException();
}
Modified: incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/BoundReference.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/BoundReference.java?rev=399459&r1=399458&r2=399459&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/BoundReference.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/BoundReference.java Wed May 3 15:23:05 2006
@@ -19,14 +19,14 @@
/**
* @version $Rev$ $Date$
*/
-public class BoundReference extends Reference {
- private Binding binding;
+public class BoundReference<B extends Binding> extends Reference {
+ private B binding;
- public Binding getBinding() {
+ public B getBinding() {
return binding;
}
- public void setBinding(Binding binding) {
+ public void setBinding(B binding) {
this.binding = binding;
}
}
Modified: incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/BoundService.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/BoundService.java?rev=399459&r1=399458&r2=399459&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/BoundService.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/BoundService.java Wed May 3 15:23:05 2006
@@ -21,15 +21,15 @@
/**
* @version $Rev$ $Date$
*/
-public class BoundService extends Service {
- private Binding binding;
+public class BoundService<B extends Binding> extends Service {
+ private B binding;
private URI target;
- public Binding getBinding() {
+ public B getBinding() {
return binding;
}
- public void setBinding(Binding binding) {
+ public void setBinding(B binding) {
this.binding = binding;
}
Added: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/builder/BindingBuilder.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/builder/BindingBuilder.java?rev=399459&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/builder/BindingBuilder.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/builder/BindingBuilder.java Wed May 3 15:23:05 2006
@@ -0,0 +1,31 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.spi.builder;
+
+import org.apache.tuscany.model.Binding;
+import org.apache.tuscany.model.BoundService;
+import org.apache.tuscany.model.BoundReference;
+import org.apache.tuscany.spi.context.Context;
+import org.apache.tuscany.spi.context.CompositeContext;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public interface BindingBuilder<B extends Binding> {
+ Context build(CompositeContext parent, BoundService<B> boundService);
+ Context build(CompositeContext parent, BoundReference<B> boundReference);
+}
Propchange: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/builder/BindingBuilder.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/builder/BindingBuilder.java
------------------------------------------------------------------------------
svn:keywords = Rev,Date
Modified: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/builder/BuilderRegistry.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/builder/BuilderRegistry.java?rev=399459&r1=399458&r2=399459&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/builder/BuilderRegistry.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/builder/BuilderRegistry.java Wed May 3 15:23:05 2006
@@ -16,6 +16,7 @@
*/
package org.apache.tuscany.spi.builder;
+import org.apache.tuscany.model.Binding;
import org.apache.tuscany.model.BoundReference;
import org.apache.tuscany.model.BoundService;
import org.apache.tuscany.model.Component;
@@ -33,13 +34,17 @@
<I extends Implementation<?>> void register(Class<I> implClass, ComponentBuilder<I> builder);
- void register(WireBuilder builder);
-
<I extends Implementation<?>> Context build(CompositeContext parent, Component<I> component);
- Context build(CompositeContext parent, BoundService boundService);
+ <B extends Binding> void register(BindingBuilder<B> builder);
+
+ <B extends Binding> void register(Class<B> implClass, BindingBuilder<B> builder);
- Context build(CompositeContext parent, BoundReference boundReference);
+ <B extends Binding> Context build(CompositeContext parent, BoundService<B> boundService);
+
+ <B extends Binding> Context build(CompositeContext parent, BoundReference<B> boundReference);
+
+ void register(WireBuilder builder);
void connect(SourceWireFactory<?> source, TargetWireFactory<?> target);