Updating RMI model to follow interface/factory pattern.

git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@705766 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
lresende 2008-10-17 21:49:44 +00:00
parent d5bfc516e8
commit 090753c7ec
6 changed files with 277 additions and 32 deletions

View file

@ -16,48 +16,48 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.tuscany.sca.binding.rmi;
import org.apache.tuscany.sca.assembly.Binding;
/**
* Represents a binding to an RMI service.
*
* RMI Binding model
*
* @version $Rev$ $Date$
*/
public class RMIBinding implements Binding {
public interface RMIBinding extends Binding {
private String uri;
private String name;
/**
* @return the host name of the RMI Service
*/
String getHost();
public String getURI() {
return uri;
}
public void setURI(String uri) {
this.uri = uri;
}
/**
* @return the port number for the RMI Service
*/
String getPort();
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
/**
* @return returns the RMI Service Name
*/
String getServiceName();
public boolean isUnresolved() {
// The binding is always resolved
return false;
}
/**
* @param rmiHostName the hostname of the RMI Service
*/
void setHost(String rmiHostName);
public void setUnresolved(boolean unresolved) {
// The binding is always resolved
}
/**
* @param rmiPort the port number for the RMI Service
*/
void setPort(String rmiPort);
/**
* Sets the service name for the RMI Server
*
* @param rmiServiceName the name of the RMI service
*/
void setServiceName(String rmiServiceName);
@Override
public Object clone() throws CloneNotSupportedException {
// TODO Auto-generated method stub
return super.clone();
}
}

View file

@ -0,0 +1,33 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.sca.binding.rmi;
/**
* Factory to create RMIBinding instances
*
* @version $Rev$ $Date$
*/
public interface RMIBindingFactory {
/**
* Create RMIBinding model
* @return
*/
RMIBinding createRMIBinding();
}

View file

@ -0,0 +1,36 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.sca.binding.rmi.impl;
import org.apache.tuscany.sca.binding.rmi.RMIBinding;
import org.apache.tuscany.sca.binding.rmi.RMIBindingFactory;
/**
* Factory implementation to create RMI Models
*
* @version $Rev$ $Date$
*/
public class RMIBindingFactoryImpl implements RMIBindingFactory {
public RMIBinding createRMIBinding() {
// TODO Auto-generated method stub
return new RMIBindingImpl();
}
}

View file

@ -0,0 +1,157 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.sca.binding.rmi.impl;
import java.net.URI;
import java.net.URISyntaxException;
import org.apache.tuscany.sca.binding.rmi.RMIBinding;
/**
* Represents a binding to an RMI service.
*
* @version $Rev$ $Date$
*/
public class RMIBindingImpl implements RMIBinding {
private String name;
private String uri;
private String host;
private String port;
private String serviceName;
/**
* @return the host name of the RMI Service
*/
public String getHost() {
return host;
}
/**
* @param rmiHostName the hostname of the RMI Service
*/
public void setHost(String rmiHostName) {
this.host = rmiHostName;
}
/**
* @return the port number for the RMI Service
*/
public String getPort() {
return port;
}
/**
* @param rmiPort the port number for the RMI Service
*/
public void setPort(String rmiPort) {
this.port = rmiPort;
}
/**
* @return returns the RMI Service Name
*/
public String getServiceName() {
return serviceName;
}
/**
* Sets the service name for the RMI Server
*
* @param rmiServiceName the name of the RMI service
*/
public void setServiceName(String rmiServiceName) {
this.serviceName = rmiServiceName;
}
public String getName() {
return name;
}
public String getURI() {
compose();
return uri;
}
public void setName(String name) {
this.name = name;
}
public void setURI(String uri) {
this.uri = uri;
parse(uri);
}
public boolean isUnresolved() {
return false;
}
public void setUnresolved(boolean unresolved) {
// The sample binding is always resolved
}
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
/*
rmi://[host][:port][/[object]]
rmi:[/][object]
*/
private void parse(String uriStr) {
if (uriStr == null) {
return;
}
URI uri = URI.create(uriStr);
if (host == null) {
this.host = uri.getHost();
}
if (port == null) {
this.port = String.valueOf(uri.getPort());
}
if (serviceName == null) {
String path = uri.getPath();
if (path != null && path.charAt(0) == '/') {
path = path.substring(1);
}
this.serviceName = path;
}
}
private void compose() {
if (uri == null) {
int p = -1;
if (port != null && port.length() > 0) {
p = Integer.decode(port);
}
String path = serviceName;
if (path != null) {
path = "/" + path;
}
try {
uri = new URI("rmi", null, host, p, path, null, null).toString();
} catch (URISyntaxException e) {
throw new IllegalArgumentException(e);
}
}
}
}

View file

@ -0,0 +1,19 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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.
# Implementation class for model factory
org.apache.tuscany.sca.binding.rmi.impl.RMIBindingFactoryImpl

View file

@ -16,4 +16,4 @@
# under the License.
# Implementation class for the artifact processor extension
org.apache.tuscany.sca.assembly.xml.DefaultBeanModelProcessor;qname=http://tuscany.apache.org/xmlns/sca/1.0#binding.rmi,model=org.apache.tuscany.sca.binding.rmi.RMIBinding
org.apache.tuscany.sca.assembly.xml.DefaultBeanModelProcessor;qname=http://tuscany.apache.org/xmlns/sca/1.0#binding.rmi,model=org.apache.tuscany.sca.binding.rmi.RMIBinding,factory=org.apache.tuscany.sca.binding.rmi.RMIBindingFactory