You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@etch.apache.org by sc...@apache.org on 2009/03/25 22:48:00 UTC
svn commit: r758444 - in /incubator/etch/branches/config/services/config:
example/ example/src/main/java/org/apache/etch/services/config/example/
src/main/java/org/apache/etch/services/config/
Author: sccomer
Date: Wed Mar 25 21:47:49 2009
New Revision: 758444
URL: http://svn.apache.org/viewvc?rev=758444&view=rev
Log:
better examples in sequence.
Added:
incubator/etch/branches/config/services/config/example/local2.yml
incubator/etch/branches/config/services/config/example/src/main/java/org/apache/etch/services/config/example/MainConfigExampleListener1.java (with props)
incubator/etch/branches/config/services/config/example/src/main/java/org/apache/etch/services/config/example/MainConfigExampleListener2.java (with props)
incubator/etch/branches/config/services/config/example/src/main/java/org/apache/etch/services/config/example/MainConfigExampleListener3.java (with props)
incubator/etch/branches/config/services/config/example/src/main/java/org/apache/etch/services/config/example/MainConfigExampleListener4.java
- copied, changed from r757878, incubator/etch/branches/config/services/config/example/src/main/java/org/apache/etch/services/config/example/MainConfigExampleListener.java
Removed:
incubator/etch/branches/config/services/config/example/src/main/java/org/apache/etch/services/config/example/MainConfigExampleListener.java
Modified:
incubator/etch/branches/config/services/config/example/local.yml
incubator/etch/branches/config/services/config/src/main/java/org/apache/etch/services/config/YamlConfig.java
Modified: incubator/etch/branches/config/services/config/example/local.yml
URL: http://svn.apache.org/viewvc/incubator/etch/branches/config/services/config/example/local.yml?rev=758444&r1=758443&r2=758444&view=diff
==============================================================================
--- incubator/etch/branches/config/services/config/example/local.yml (original)
+++ incubator/etch/branches/config/services/config/example/local.yml Wed Mar 25 21:47:49 2009
@@ -1 +1,2 @@
configUri: tcp://localhost:4001/services/config/example/remote?TcpTransport.reconnectDelay=4000
+blah: 2
\ No newline at end of file
Added: incubator/etch/branches/config/services/config/example/local2.yml
URL: http://svn.apache.org/viewvc/incubator/etch/branches/config/services/config/example/local2.yml?rev=758444&view=auto
==============================================================================
--- incubator/etch/branches/config/services/config/example/local2.yml (added)
+++ incubator/etch/branches/config/services/config/example/local2.yml Wed Mar 25 21:47:49 2009
@@ -0,0 +1 @@
+listenUri: tcp://0.0.0.0:4002
Added: incubator/etch/branches/config/services/config/example/src/main/java/org/apache/etch/services/config/example/MainConfigExampleListener1.java
URL: http://svn.apache.org/viewvc/incubator/etch/branches/config/services/config/example/src/main/java/org/apache/etch/services/config/example/MainConfigExampleListener1.java?rev=758444&view=auto
==============================================================================
--- incubator/etch/branches/config/services/config/example/src/main/java/org/apache/etch/services/config/example/MainConfigExampleListener1.java (added)
+++ incubator/etch/branches/config/services/config/example/src/main/java/org/apache/etch/services/config/example/MainConfigExampleListener1.java Wed Mar 25 21:47:49 2009
@@ -0,0 +1,60 @@
+/*
+ * $Id$
+ *
+ * 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.etch.services.config.example;
+
+import org.apache.etch.bindings.java.support.ServerFactory;
+import org.apache.etch.util.core.io.Transport;
+
+/**
+ * Main program for ConfigExampleServer. This program makes a listener to accept
+ * connections from MainConfigExampleClient. This is a standard generic etch
+ * listener.
+ */
+public class MainConfigExampleListener1 implements
+ ConfigExampleHelper.ConfigExampleServerFactory
+{
+ /**
+ * Main program for ConfigExampleServer.
+ *
+ * @param args command line arguments.
+ * @throws Exception
+ */
+ public static void main( String[] args ) throws Exception
+ {
+ // Define the listener uri.
+ String uri = "tcp://0.0.0.0:4002";
+ System.out.println( "listen uri = " + uri );
+
+ // Create the listener stack.
+ ServerFactory listener = ConfigExampleHelper.newListener( uri, null,
+ new MainConfigExampleListener1() );
+ System.out.println( "listener created " + listener );
+
+ // Start the listener stack.
+ listener.transportControl( Transport.START_AND_WAIT_UP, 4000 );
+ System.out.println( "listener started " + listener );
+ }
+
+ public ConfigExampleServer newConfigExampleServer(
+ RemoteConfigExampleClient client )
+ {
+ return new ImplConfigExampleServer( client );
+ }
+}
Propchange: incubator/etch/branches/config/services/config/example/src/main/java/org/apache/etch/services/config/example/MainConfigExampleListener1.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/etch/branches/config/services/config/example/src/main/java/org/apache/etch/services/config/example/MainConfigExampleListener1.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: incubator/etch/branches/config/services/config/example/src/main/java/org/apache/etch/services/config/example/MainConfigExampleListener2.java
URL: http://svn.apache.org/viewvc/incubator/etch/branches/config/services/config/example/src/main/java/org/apache/etch/services/config/example/MainConfigExampleListener2.java?rev=758444&view=auto
==============================================================================
--- incubator/etch/branches/config/services/config/example/src/main/java/org/apache/etch/services/config/example/MainConfigExampleListener2.java (added)
+++ incubator/etch/branches/config/services/config/example/src/main/java/org/apache/etch/services/config/example/MainConfigExampleListener2.java Wed Mar 25 21:47:49 2009
@@ -0,0 +1,70 @@
+/*
+ * $Id$
+ *
+ * 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.etch.services.config.example;
+
+import org.apache.etch.bindings.java.support.ServerFactory;
+import org.apache.etch.services.config.ConfigurationServer;
+import org.apache.etch.services.config.YamlConfig;
+import org.apache.etch.util.core.io.Transport;
+
+/**
+ * Main program for ConfigExampleServer. This program makes a listener to accept
+ * connections from MainConfigExampleClient. This is a standard etch listener
+ * modified to load the listen uri from a local config file at startup.
+ */
+public class MainConfigExampleListener2 implements
+ ConfigExampleHelper.ConfigExampleServerFactory
+{
+ private static final String LOCAL = "services/config/example/local2";
+
+ private static final String LISTEN_URI = "listenUri";
+
+ /**
+ * Main program for ConfigExampleServer.
+ *
+ * @param args command line arguments.
+ * @throws Exception
+ */
+ public static void main( String[] args ) throws Exception
+ {
+ // Open the local config file.
+ ConfigurationServer local = new YamlConfig( null, LOCAL );
+ System.out.println( "loaded local configuration named '" + LOCAL + "'" );
+
+ // Get the listener uri from the config file.
+ String uri = local.getStringPath( local.getRoot(), LISTEN_URI );
+ System.out.println( "listen uri = " + uri );
+
+ // Create the listener stack.
+ ServerFactory listener = ConfigExampleHelper.newListener( uri, null,
+ new MainConfigExampleListener2() );
+ System.out.println( "listener created " + listener );
+
+ // Start the listener stack.
+ listener.transportControl( Transport.START_AND_WAIT_UP, 4000 );
+ System.out.println( "listener started " + listener );
+ }
+
+ public ConfigExampleServer newConfigExampleServer(
+ RemoteConfigExampleClient client )
+ {
+ return new ImplConfigExampleServer( client );
+ }
+}
Propchange: incubator/etch/branches/config/services/config/example/src/main/java/org/apache/etch/services/config/example/MainConfigExampleListener2.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/etch/branches/config/services/config/example/src/main/java/org/apache/etch/services/config/example/MainConfigExampleListener2.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: incubator/etch/branches/config/services/config/example/src/main/java/org/apache/etch/services/config/example/MainConfigExampleListener3.java
URL: http://svn.apache.org/viewvc/incubator/etch/branches/config/services/config/example/src/main/java/org/apache/etch/services/config/example/MainConfigExampleListener3.java?rev=758444&view=auto
==============================================================================
--- incubator/etch/branches/config/services/config/example/src/main/java/org/apache/etch/services/config/example/MainConfigExampleListener3.java (added)
+++ incubator/etch/branches/config/services/config/example/src/main/java/org/apache/etch/services/config/example/MainConfigExampleListener3.java Wed Mar 25 21:47:49 2009
@@ -0,0 +1,110 @@
+/*
+ * $Id$
+ *
+ * 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.etch.services.config.example;
+
+import org.apache.etch.bindings.java.support.ServerFactory;
+import org.apache.etch.services.config.ConfigurationClient;
+import org.apache.etch.services.config.ConfigurationServer;
+import org.apache.etch.services.config.YamlConfig;
+import org.apache.etch.services.config.example.ConfigExampleHelper.ConfigExampleServerFactory;
+import org.apache.etch.util.core.io.Transport;
+
+/**
+ * Main program for ConfigExampleServer. This program makes a listener to accept
+ * connections from MainConfigExampleClient. This is a standard etch listener
+ * modified to load the listen uri from a local config file at startup and
+ * whenever the file changes.
+ */
+public class MainConfigExampleListener3 implements
+ ConfigExampleServerFactory
+{
+ private static final String LOCAL = "services/config/example/local2";
+
+ private static final String LISTEN_URI = "listenUri";
+
+ /**
+ * Main program for ConfigExampleServer.
+ *
+ * @param args command line arguments.
+ * @throws Exception
+ */
+ public static void main( String[] args ) throws Exception
+ {
+ // Create the server session factory.
+ factory = new MainConfigExampleListener3();
+
+ // Open the local config file.
+ local = new YamlConfig( new MyLocalConfigurationClient(), LOCAL );
+ System.out.println( "loaded local configuration named '" + LOCAL + "'" );
+
+ // Subscribe to changes in the local config file.
+ local.subscribe( local.getRoot() );
+ System.out.println( "subscribed to changes in '" + LOCAL + "'" );
+ }
+
+ private static ConfigExampleServerFactory factory;
+
+ private static ConfigurationServer local;
+
+ private static class MyLocalConfigurationClient implements
+ ConfigurationClient
+ {
+ public void configValuesChanged( Object[] updated )
+ {
+ try
+ {
+ String uri = local.getStringPath( local.getRoot(), LISTEN_URI );
+ System.out.println( "listen uri = " + uri );
+ resetListener( uri );
+ }
+ catch ( Exception e )
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ private static void resetListener( String listenUri ) throws Exception
+ {
+ // Stop any old listener.
+ if (listener != null)
+ {
+ System.out.println( "stopping listener " + listener );
+ listener.transportControl( Transport.STOP_AND_WAIT_DOWN, 4000 );
+ listener = null;
+ }
+
+ // Create the listener stack.
+ listener = ConfigExampleHelper.newListener( listenUri, null, factory );
+ System.out.println( "listener created " + listener );
+
+ // Start the listener stack.
+ listener.transportControl( Transport.START_AND_WAIT_UP, 4000 );
+ System.out.println( "listener started " + listener );
+ }
+
+ private static ServerFactory listener;
+
+ public ConfigExampleServer newConfigExampleServer(
+ RemoteConfigExampleClient client )
+ {
+ return new ImplConfigExampleServer( client );
+ }
+}
Propchange: incubator/etch/branches/config/services/config/example/src/main/java/org/apache/etch/services/config/example/MainConfigExampleListener3.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/etch/branches/config/services/config/example/src/main/java/org/apache/etch/services/config/example/MainConfigExampleListener3.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Copied: incubator/etch/branches/config/services/config/example/src/main/java/org/apache/etch/services/config/example/MainConfigExampleListener4.java (from r757878, incubator/etch/branches/config/services/config/example/src/main/java/org/apache/etch/services/config/example/MainConfigExampleListener.java)
URL: http://svn.apache.org/viewvc/incubator/etch/branches/config/services/config/example/src/main/java/org/apache/etch/services/config/example/MainConfigExampleListener4.java?p2=incubator/etch/branches/config/services/config/example/src/main/java/org/apache/etch/services/config/example/MainConfigExampleListener4.java&p1=incubator/etch/branches/config/services/config/example/src/main/java/org/apache/etch/services/config/example/MainConfigExampleListener.java&r1=757878&r2=758444&rev=758444&view=diff
==============================================================================
--- incubator/etch/branches/config/services/config/example/src/main/java/org/apache/etch/services/config/example/MainConfigExampleListener.java (original)
+++ incubator/etch/branches/config/services/config/example/src/main/java/org/apache/etch/services/config/example/MainConfigExampleListener4.java Wed Mar 25 21:47:49 2009
@@ -1,21 +1,20 @@
-/* $Id$
- *
- * 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.
+/*
+ * $Id$
+ *
+ * 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.etch.services.config.example;
@@ -37,10 +36,12 @@
* Main program for ConfigExampleServer. This program makes a listener to accept
* connections from MainConfigExampleClient.
*/
-public class MainConfigExampleListener implements ConfigExampleServerFactory
+public class MainConfigExampleListener4 implements ConfigExampleServerFactory
{
private static final String LOCAL = "services/config/example/local";
+
private static final String CONFIG_URI = "configUri";
+
private static final String LISTEN_URI = "listenUri";
/**
@@ -51,68 +52,67 @@
*/
public static void main( String[] args ) throws Exception
{
- // use our local configuration to find our remote configuration service
- // and keep us updated if it changes.
+ // Create the server session factory.
+ factory = new MainConfigExampleListener4();
+
+ // Create the config client factory.
+ configClientFactory = new MyConfigurationClientFactory();
+ // Open the local config file.
local = new YamlConfig( new MyLocalConfigurationClient(), LOCAL );
- System.out.println( "loaded local configuration named '"+LOCAL+"'" );
- configUriId = local.getConfigPath( local.getRoot(), CONFIG_URI );
- System.out.println( "subscribing to local "+CONFIG_URI );
- local.subscribe( configUriId );
+ System.out.println( "loaded local configuration named '" + LOCAL + "'" );
+
+ // Subscribe to changes in the local config file.
+ local.subscribe( local.getRoot() );
+ System.out.println( "subscribed to changes in '" + LOCAL + "'" );
}
+
+ private static ConfigExampleServerFactory factory;
+ private static ConfigurationClientFactory configClientFactory;
+
private static ConfigurationServer local;
-
- private static Object configUriId;
-
- private static class MyLocalConfigurationClient implements ConfigurationClient
+
+ private static class MyLocalConfigurationClient implements
+ ConfigurationClient
{
public void configValuesChanged( Object[] updated )
{
- for (Object id: updated)
+ try
{
- if (id.equals( configUriId ))
- {
- try
- {
- configUriChanged();
- }
- catch ( Exception e )
- {
- e.printStackTrace();
- }
- continue;
- }
+ String configUri = local.getStringPath( local.getRoot(), CONFIG_URI );
+ System.out.println( "local " + CONFIG_URI + " changed: " + configUri );
+ configUriChanged( configUri );
+ }
+ catch ( Exception e )
+ {
+ e.printStackTrace();
}
}
}
-
- private static void configUriChanged() throws Exception
+
+ private static void configUriChanged( String configUri ) throws Exception
{
- configUri = local.getString( configUriId );
- System.out.println( "local "+CONFIG_URI+" changed: "+configUri );
-
- RemoteConfigurationServer s = server;
- if (s != null)
+ if (server != null)
{
- System.out.println( "shutting down remote config service connection" );
+ System.out.println( "stopping remote config service" );
+ server._stopAndWaitDown( 4000 );
server = null;
- s._stop();
- s = null;
}
+
+ server = ConfigurationHelper.newServer( configUri, null, configClientFactory );
+ configName = new URL( configUri ).getUri();
- server = ConfigurationHelper.newServer( configUri, null,
- new MyConfigurationClientFactory() );
- System.out.println( "starting remote config service connection" );
+ System.out.println( "starting remote config service connection "+server );
server._start();
}
-
- private static String configUri;
-
+
private static RemoteConfigurationServer server;
- private static class MyConfigurationClientFactory
- implements ConfigurationClientFactory
+ private static String configName;
+
+ private static class MyConfigurationClientFactory implements
+ ConfigurationClientFactory
{
public ConfigurationClient newConfigurationClient(
RemoteConfigurationServer server ) throws Exception
@@ -120,14 +120,15 @@
return new MyRemoteConfigurationClient( server );
}
}
-
- private static class MyRemoteConfigurationClient extends BaseConfigurationClient
+
+ private static class MyRemoteConfigurationClient extends
+ BaseConfigurationClient
{
public MyRemoteConfigurationClient( RemoteConfigurationServer server )
{
this.server = server;
}
-
+
private final RemoteConfigurationServer server;
@Override
@@ -136,71 +137,59 @@
if (event == Session.UP)
{
System.out.println( "remote config service connection is up" );
- String name = new URL( configUri ).getUri();
- System.out.println( "loading remote configuration named '"+name+"'" );
- Object root = server.loadConfig( name );
- System.out.println( "loaded remote configuration named '"+name+"'" );
- listenUriId = server.getConfigPath( root, LISTEN_URI );
- System.out.println( "subscribing to remote "+LISTEN_URI );
- server.subscribe( listenUriId );
+
+ System.out.println( "loading remote configuration named '"
+ + configName + "'" );
+ root = server.loadConfig( configName );
+ System.out.println( "loaded remote configuration named '"
+ + configName + "'" );
+
+ System.out.println( "subscribing to remote configuration" );
+ server.subscribe( root );
}
}
- private Object listenUriId;
-
+ private Object root;
+
@Override
public void configValuesChanged( Object[] updated )
{
- for (Object id: updated)
+ try
{
- if (id.equals( listenUriId ))
- {
- try
- {
- listenUriChanged();
- }
- catch ( Exception e )
- {
- e.printStackTrace();
- }
- continue;
- }
+ String uri = server.getStringPath( root, LISTEN_URI );
+ System.out.println( "listen uri = " + uri );
+ resetListener( uri );
+ }
+ catch ( Exception e )
+ {
+ e.printStackTrace();
}
- }
-
- private void listenUriChanged() throws Exception
- {
- String listenUri = server.getString( listenUriId );
- System.out.println( "remote "+LISTEN_URI+" changed: "+listenUri );
- resetListener( listenUri );
}
}
private static void resetListener( String listenUri ) throws Exception
{
- ServerFactory l = listener;
- if (l != null)
+ // Stop any old listener.
+ if (listener != null)
{
- System.out.println( "stopping listener "+l );
+ System.out.println( "stopping listener " + listener );
+ listener.transportControl( Transport.STOP_AND_WAIT_DOWN, 4000 );
listener = null;
- l.transportControl( Transport.STOP, null );
- l = null;
}
-
+
+ // Create the listener stack.
listener = ConfigExampleHelper.newListener( listenUri, null, factory );
+ System.out.println( "listener created " + listener );
// Start the Listener
listener.transportControl( Transport.START_AND_WAIT_UP, 4000 );
- System.out.println( "started listener "+listener );
+ System.out.println( "listener started " + listener );
}
-
+
private static ServerFactory listener;
-
- private final static MainConfigExampleListener factory =
- new MainConfigExampleListener();
public ConfigExampleServer newConfigExampleServer(
- RemoteConfigExampleClient client ) throws Exception
+ RemoteConfigExampleClient client )
{
return new ImplConfigExampleServer( client );
}
Modified: incubator/etch/branches/config/services/config/src/main/java/org/apache/etch/services/config/YamlConfig.java
URL: http://svn.apache.org/viewvc/incubator/etch/branches/config/services/config/src/main/java/org/apache/etch/services/config/YamlConfig.java?rev=758444&r1=758443&r2=758444&view=diff
==============================================================================
--- incubator/etch/branches/config/services/config/src/main/java/org/apache/etch/services/config/YamlConfig.java (original)
+++ incubator/etch/branches/config/services/config/src/main/java/org/apache/etch/services/config/YamlConfig.java Wed Mar 25 21:47:49 2009
@@ -678,12 +678,13 @@
if (t1 == t0)
{
+ List<Integer> changeSet = new ArrayList<Integer>();
+
synchronized (subs)
{
List<Conf> newConfigs = new ArrayList<Conf>( configs );
Set<Integer> newSubs = Collections.synchronizedSet(
new HashSet<Integer>( subs ) );
- List<Integer> changeSet = new ArrayList<Integer>();
updateObject( newConfigs, newSubs, changeSet, 0,
null, null, o );
@@ -693,7 +694,7 @@
subs = newSubs;
}
- // TODO notify about changeSet
+ fireConfigValuesChanged( changeSet.toArray() );
}
}
}
@@ -729,12 +730,13 @@
}
private void updateObject( List<Conf> newConfigs, Set<Integer> newSubs,
- List<Integer> changeSet, int id, Integer parent, Object nameOrIndex,
+ List<Integer> changeSet, int iid, Integer parent, Object nameOrIndex,
Object value )
{
+ // TODO implement this.
if (true) return;
- Conf c = getConf0( id );
+ Conf c = getConf0( iid );
Assertion.check( (parent == null && c.parent == null) ||
(parent != null && c.parent != null && parent.equals( c.parent )),