You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm-commits@maven.apache.org by ev...@apache.org on 2005/11/28 18:02:13 UTC

svn commit: r349435 [3/3] - in /maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src: main/java/org/apache/maven/scm/provider/perforce/ main/java/org/apache/maven/scm/provider/perforce/command/ main/java/org/apache/maven/scm/provider/per...

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/login/PerforceLoginCommandTest.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/login/PerforceLoginCommandTest.java?rev=349435&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/login/PerforceLoginCommandTest.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/login/PerforceLoginCommandTest.java Mon Nov 28 09:01:05 2005
@@ -0,0 +1,61 @@
+package org.apache.maven.scm.provider.perforce.command.login;
+
+/*
+ * Copyright 2001-2005 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.
+ */
+
+import java.io.File;
+
+import org.apache.maven.scm.CommandParameters;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmTestCase;
+import org.apache.maven.scm.provider.perforce.repository.PerforceScmProviderRepository;
+import org.apache.maven.scm.repository.ScmRepository;
+
+import org.codehaus.plexus.util.cli.Commandline;
+
+/**
+ * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
+ * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
+ * @version $Id$
+ */
+public class PerforceLoginCommandTest
+    extends ScmTestCase
+{
+    public void testGetCommandLine()
+        throws Exception
+    {
+        testCommandLine( "p4 login" );
+    }
+
+    // ----------------------------------------------------------------------
+    //
+    // ----------------------------------------------------------------------
+
+    private void testCommandLine( String commandLine )
+        throws Exception
+    {
+        File workingDirectory = getTestFile( "target/perforce-login-command-test" );
+
+        ScmRepository repository = getScmManager().makeScmRepository( "scm:perforce://depot/projects/pathname" );
+        PerforceScmProviderRepository svnRepository = (PerforceScmProviderRepository) repository.getProviderRepository();
+        ScmFileSet files = new ScmFileSet( new File("."), new File[] { new File("foo.xml"), new File("bar.xml") } );
+        
+        CommandParameters params = new CommandParameters();
+        Commandline cl = PerforceLoginCommand.createCommandLine( svnRepository, workingDirectory, params );
+
+        assertEquals( commandLine, cl.toString() );
+    }
+}

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/login/PerforceLoginCommandTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/login/PerforceLoginCommandTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/login/PerforceLoginConsumerTest.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/login/PerforceLoginConsumerTest.java?rev=349435&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/login/PerforceLoginConsumerTest.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/login/PerforceLoginConsumerTest.java Mon Nov 28 09:01:05 2005
@@ -0,0 +1,73 @@
+package org.apache.maven.scm.provider.perforce.command.login;
+
+/*
+ * Copyright 2001-2005 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.
+ */
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
+
+import org.apache.maven.scm.ScmTestCase;
+
+/**
+ * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse </a>
+ * @version $Id: PerforceChangeLogConsumerTest.java 331276 2005-11-07 15:04:54Z
+ *          evenisse $
+ */
+public class PerforceLoginConsumerTest
+    extends ScmTestCase
+{
+    public void testGoodParse()
+        throws Exception
+    {
+        File testFile = getTestFile( "src/test/resources/perforce/login_good.txt" );
+
+        PerforceLoginConsumer consumer = new PerforceLoginConsumer();
+
+        FileInputStream fis = new FileInputStream( testFile );
+        BufferedReader in = new BufferedReader( new InputStreamReader( fis ) );
+        String s = in.readLine();
+        while ( s != null )
+        {
+            consumer.consumeLine( s );
+            s = in.readLine();
+        }
+
+        assertEquals( "", consumer.getOutput() );
+        assertTrue( consumer.isSuccess() );
+    }
+
+    public void testBadParse()
+        throws Exception
+    {
+        File testFile = getTestFile( "src/test/resources/perforce/login_bad.txt" );
+
+        PerforceLoginConsumer consumer = new PerforceLoginConsumer();
+
+        FileInputStream fis = new FileInputStream( testFile );
+        BufferedReader in = new BufferedReader( new InputStreamReader( fis ) );
+        String s = in.readLine();
+        while ( s != null )
+        {
+            consumer.consumeLine( s );
+            s = in.readLine();
+        }
+
+        assertFalse( consumer.isSuccess() );
+        assertEquals( 19, consumer.getOutput().length() );
+    }
+}

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/login/PerforceLoginConsumerTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/login/PerforceLoginConsumerTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/remove/PerforceRemoveCommandTest.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/remove/PerforceRemoveCommandTest.java?rev=349435&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/remove/PerforceRemoveCommandTest.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/remove/PerforceRemoveCommandTest.java Mon Nov 28 09:01:05 2005
@@ -0,0 +1,72 @@
+package org.apache.maven.scm.provider.perforce.command.remove;
+
+/*
+ * Copyright 2001-2005 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.
+ */
+
+import java.io.File;
+
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmTestCase;
+import org.apache.maven.scm.provider.perforce.repository.PerforceScmProviderRepository;
+import org.apache.maven.scm.repository.ScmRepository;
+
+import org.codehaus.plexus.util.cli.Commandline;
+
+/**
+ * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
+ * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
+ * @version $Id$
+ */
+public class PerforceRemoveCommandTest
+    extends ScmTestCase
+{
+    public void testGetCommandLine()
+        throws Exception
+    {
+        testCommandLine( "scm:perforce://depot/projects/pathname", "p4 delete foo.xml bar.xml" );
+    }
+
+    public void testGetCommandLineWithHost()
+        throws Exception
+    {
+        testCommandLine( "scm:perforce:a:username@//depot/projects/pathname",
+                         "p4 -H a -u username delete foo.xml bar.xml" );
+    }
+
+    public void testGetCommandLineWithHostAndPort()
+        throws Exception
+    {
+        testCommandLine( "scm:perforce:myhost:1234:username@//depot/projects/pathname",
+                         "p4 -H myhost:1234 -u username delete foo.xml bar.xml" );
+    }
+
+    // ----------------------------------------------------------------------
+    //
+    // ----------------------------------------------------------------------
+
+    private void testCommandLine( String scmUrl, String commandLine )
+        throws Exception
+    {
+        File workingDirectory = getTestFile( "target/perforce-remove-command-test" );
+
+        ScmRepository repository = getScmManager().makeScmRepository( scmUrl );
+        PerforceScmProviderRepository svnRepository = (PerforceScmProviderRepository) repository.getProviderRepository();
+        ScmFileSet files = new ScmFileSet( new File("."), new File[] { new File("foo.xml"), new File("bar.xml") } );
+        Commandline cl = PerforceRemoveCommand.createCommandLine( svnRepository, workingDirectory, files );
+
+        assertEquals( commandLine, cl.toString() );
+    }
+}

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/remove/PerforceRemoveCommandTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/remove/PerforceRemoveCommandTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/remove/PerforceRemoveConsumerTest.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/remove/PerforceRemoveConsumerTest.java?rev=349435&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/remove/PerforceRemoveConsumerTest.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/remove/PerforceRemoveConsumerTest.java Mon Nov 28 09:01:05 2005
@@ -0,0 +1,56 @@
+package org.apache.maven.scm.provider.perforce.command.remove;
+
+/*
+ * Copyright 2001-2005 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.
+ */
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
+import java.util.List;
+
+import org.apache.maven.scm.ScmTestCase;
+
+/**
+ * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
+ * @version $Id$
+ */
+public class PerforceRemoveConsumerTest
+    extends ScmTestCase
+{
+    public void testParse()
+        throws Exception
+    {
+        File testFile = getTestFile( "src/test/resources/perforce/removelog.txt" );
+
+        PerforceRemoveConsumer consumer = new PerforceRemoveConsumer();
+
+        FileInputStream fis = new FileInputStream( testFile );
+        BufferedReader in = new BufferedReader( new InputStreamReader( fis ) );
+        String s = in.readLine();
+        while ( s != null )
+        {
+            consumer.consumeLine( s );
+            s = in.readLine();
+        }
+
+        List removes = consumer.getRemovals();
+        assertEquals( "Wrong number of entries returned", 2, removes.size() );
+        String entry = (String) removes.get( 0 );
+        assertTrue( entry.startsWith( "//" ) );
+        assertTrue( entry.endsWith( "foo.xml" ) );
+    }
+}

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/remove/PerforceRemoveConsumerTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/remove/PerforceRemoveConsumerTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/status/PerforceStatusCommandTest.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/status/PerforceStatusCommandTest.java?rev=349435&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/status/PerforceStatusCommandTest.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/status/PerforceStatusCommandTest.java Mon Nov 28 09:01:05 2005
@@ -0,0 +1,60 @@
+package org.apache.maven.scm.provider.perforce.command.status;
+
+/*
+ * Copyright 2001-2005 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.
+ */
+
+import java.io.File;
+
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmTestCase;
+import org.apache.maven.scm.provider.perforce.repository.PerforceScmProviderRepository;
+import org.apache.maven.scm.repository.ScmRepository;
+
+import org.codehaus.plexus.util.cli.Commandline;
+
+/**
+ * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse </a>
+ * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l </a>
+ * @version $Id: PerforceChangeLogCommandTest.java 162277 2005-01-11 19:02:26Z
+ *          trygvis $
+ */
+public class PerforceStatusCommandTest
+    extends ScmTestCase
+{
+    public void testCreateCommandLine()
+        throws Exception
+    {
+        testCommandLine( "p4 opened //depot/projects/pathname/..." );
+    }
+
+    // ----------------------------------------------------------------------
+    //
+    // ----------------------------------------------------------------------
+
+    private void testCommandLine( String expected )
+        throws Exception
+    {
+        File workingDirectory = getTestFile( "target/perforce-tag-command-test" );
+
+        ScmRepository repository = getScmManager().makeScmRepository( "scm:perforce://depot/projects/pathname" );
+        PerforceScmProviderRepository svnRepository = (PerforceScmProviderRepository) repository
+            .getProviderRepository();
+        ScmFileSet files = new ScmFileSet( new File( "." ), new File[] { new File( "foo.xml" ), new File( "bar.xml" ) } );
+
+        Commandline cl1 = PerforceStatusCommand.createOpenedCommandLine( svnRepository, workingDirectory );
+        assertEquals( expected, cl1.toString() );
+    }
+}

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/status/PerforceStatusCommandTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/status/PerforceStatusCommandTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/status/PerforceStatusConsumerTest.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/status/PerforceStatusConsumerTest.java?rev=349435&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/status/PerforceStatusConsumerTest.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/status/PerforceStatusConsumerTest.java Mon Nov 28 09:01:05 2005
@@ -0,0 +1,67 @@
+package org.apache.maven.scm.provider.perforce.command.status;
+
+/*
+ * Copyright 2001-2005 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.
+ */
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
+import java.util.List;
+
+import org.apache.maven.scm.ScmFile;
+import org.apache.maven.scm.ScmFileStatus;
+import org.apache.maven.scm.ScmTestCase;
+
+/**
+ * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse </a>
+ * @version $Id: PerforceChangeLogConsumerTest.java 331276 2005-11-07 15:04:54Z
+ *          evenisse $
+ */
+public class PerforceStatusConsumerTest
+    extends ScmTestCase
+{
+    public void testGoodParse()
+        throws Exception
+    {
+        File testFile = getTestFile( "src/test/resources/perforce/status_good.txt" );
+
+        PerforceStatusConsumer consumer = new PerforceStatusConsumer();
+
+        FileInputStream fis = new FileInputStream( testFile );
+        BufferedReader in = new BufferedReader( new InputStreamReader( fis ) );
+        String s = in.readLine();
+        while ( s != null )
+        {
+            consumer.consumeLine( s );
+            s = in.readLine();
+        }
+
+        assertEquals( "", consumer.getOutput() );
+        assertTrue( consumer.isSuccess() );
+        List results = consumer.getDepotfiles();
+        assertEquals( "Wrong number of entries returned", 4, results.size() );
+        String entry = (String) results.get( 0 );
+        assertEquals( 33, entry.indexOf( "Foo.java" ) );
+
+        results = PerforceStatusCommand.createResults( "//depot/sandbox/mperham/scm-test", consumer );
+        assertEquals( 4, results.size() );
+        assertTrue( results.get( 0 ) instanceof ScmFile );
+        ScmFile file = (ScmFile) results.get( 0 );
+        assertEquals( "Foo.java", file.getPath() );
+        assertEquals( ScmFileStatus.ADDED, file.getStatus() );
+    }
+}

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/status/PerforceStatusConsumerTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/status/PerforceStatusConsumerTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/tag/PerforceTagCommandTest.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/tag/PerforceTagCommandTest.java?rev=349435&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/tag/PerforceTagCommandTest.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/tag/PerforceTagCommandTest.java Mon Nov 28 09:01:05 2005
@@ -0,0 +1,62 @@
+package org.apache.maven.scm.provider.perforce.command.tag;
+
+/*
+ * Copyright 2001-2005 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.
+ */
+
+import java.io.File;
+
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmTestCase;
+import org.apache.maven.scm.provider.perforce.repository.PerforceScmProviderRepository;
+import org.apache.maven.scm.repository.ScmRepository;
+
+import org.codehaus.plexus.util.cli.Commandline;
+
+/**
+ * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse </a>
+ * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l </a>
+ * @version $Id: PerforceChangeLogCommandTest.java 162277 2005-01-11 19:02:26Z
+ *          trygvis $
+ */
+public class PerforceTagCommandTest
+    extends ScmTestCase
+{
+    public void testCreateCommandLine()
+        throws Exception
+    {
+        testCommandLine( "foo-tag", "p4 label -i", "p4 labelsync -l foo-tag foo.xml bar.xml" );
+    }
+
+    // ----------------------------------------------------------------------
+    //
+    // ----------------------------------------------------------------------
+
+    private void testCommandLine( String tag, String create, String sync )
+        throws Exception
+    {
+        File workingDirectory = getTestFile( "target/perforce-tag-command-test" );
+
+        ScmRepository repository = getScmManager().makeScmRepository( "scm:perforce://depot/projects/pathname" );
+        PerforceScmProviderRepository svnRepository = (PerforceScmProviderRepository) repository
+            .getProviderRepository();
+        ScmFileSet files = new ScmFileSet( new File( "." ), new File[] { new File( "foo.xml" ), new File( "bar.xml" ) } );
+
+        Commandline cl1 = PerforceTagCommand.createLabelCommandLine( svnRepository, workingDirectory, files, tag );
+        assertEquals( create, cl1.toString() );
+        Commandline cl2 = PerforceTagCommand.createLabelsyncCommandLine( svnRepository, workingDirectory, files, tag );
+        assertEquals( sync, cl2.toString() );
+    }
+}

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/tag/PerforceTagCommandTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/tag/PerforceTagCommandTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/tag/PerforceTagConsumerTest.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/tag/PerforceTagConsumerTest.java?rev=349435&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/tag/PerforceTagConsumerTest.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/tag/PerforceTagConsumerTest.java Mon Nov 28 09:01:05 2005
@@ -0,0 +1,78 @@
+package org.apache.maven.scm.provider.perforce.command.tag;
+
+/*
+ * Copyright 2001-2005 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.
+ */
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
+import java.util.List;
+
+import org.apache.maven.scm.ScmTestCase;
+
+/**
+ * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse </a>
+ * @version $Id: PerforceChangeLogConsumerTest.java 331276 2005-11-07 15:04:54Z
+ *          evenisse $
+ */
+public class PerforceTagConsumerTest
+    extends ScmTestCase
+{
+    public void testGoodParse()
+        throws Exception
+    {
+        File testFile = getTestFile( "src/test/resources/perforce/tag_good.txt" );
+
+        PerforceTagConsumer consumer = new PerforceTagConsumer();
+
+        FileInputStream fis = new FileInputStream( testFile );
+        BufferedReader in = new BufferedReader( new InputStreamReader( fis ) );
+        String s = in.readLine();
+        while ( s != null )
+        {
+            consumer.consumeLine( s );
+            s = in.readLine();
+        }
+
+        assertEquals( "", consumer.getOutput() );
+        assertTrue( consumer.isSuccess() );
+        List results = consumer.getTagged();
+        assertEquals( "Wrong number of entries returned", 2, results.size() );
+        String entry = (String) results.get( 0 );
+        assertTrue( entry.endsWith( "pom.xml" ) );
+    }
+
+    public void testBadParse()
+        throws Exception
+    {
+        File testFile = getTestFile( "src/test/resources/perforce/tag_bad.txt" );
+
+        PerforceTagConsumer consumer = new PerforceTagConsumer();
+
+        FileInputStream fis = new FileInputStream( testFile );
+        BufferedReader in = new BufferedReader( new InputStreamReader( fis ) );
+        String s = in.readLine();
+        while ( s != null )
+        {
+            consumer.consumeLine( s );
+            s = in.readLine();
+        }
+
+        assertFalse( consumer.isSuccess() );
+        assertEquals( 67, consumer.getOutput().length() );
+    }
+}

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/tag/PerforceTagConsumerTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/tag/PerforceTagConsumerTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/unedit/PerforceUnEditCommandTest.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/unedit/PerforceUnEditCommandTest.java?rev=349435&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/unedit/PerforceUnEditCommandTest.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/unedit/PerforceUnEditCommandTest.java Mon Nov 28 09:01:05 2005
@@ -0,0 +1,58 @@
+package org.apache.maven.scm.provider.perforce.command.unedit;
+
+/*
+ * Copyright 2001-2005 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.
+ */
+
+import java.io.File;
+
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmTestCase;
+import org.apache.maven.scm.provider.perforce.repository.PerforceScmProviderRepository;
+import org.apache.maven.scm.repository.ScmRepository;
+
+import org.codehaus.plexus.util.cli.Commandline;
+
+/**
+ * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
+ * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
+ * @version $Id$
+ */
+public class PerforceUnEditCommandTest
+    extends ScmTestCase
+{
+    public void testGetCommandLine()
+        throws Exception
+    {
+        testCommandLine( "scm:perforce://depot/projects/pathname", "p4 revert foo.xml bar.xml" );
+    }
+
+    // ----------------------------------------------------------------------
+    //
+    // ----------------------------------------------------------------------
+
+    private void testCommandLine( String scmUrl, String commandLine )
+        throws Exception
+    {
+        File workingDirectory = getTestFile( "target/perforce-unedit-command-test" );
+
+        ScmRepository repository = getScmManager().makeScmRepository( scmUrl );
+        PerforceScmProviderRepository svnRepository = (PerforceScmProviderRepository) repository.getProviderRepository();
+        ScmFileSet files = new ScmFileSet( new File("."), new File[] { new File("foo.xml"), new File("bar.xml") } );
+        Commandline cl = PerforceUnEditCommand.createCommandLine( svnRepository, workingDirectory, files );
+
+        assertEquals( commandLine, cl.toString() );
+    }
+}

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/unedit/PerforceUnEditCommandTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/unedit/PerforceUnEditCommandTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/unedit/PerforceUnEditConsumerTest.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/unedit/PerforceUnEditConsumerTest.java?rev=349435&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/unedit/PerforceUnEditConsumerTest.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/unedit/PerforceUnEditConsumerTest.java Mon Nov 28 09:01:05 2005
@@ -0,0 +1,78 @@
+package org.apache.maven.scm.provider.perforce.command.unedit;
+
+/*
+ * Copyright 2001-2005 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.
+ */
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
+import java.util.List;
+
+import org.apache.maven.scm.ScmTestCase;
+
+/**
+ * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse </a>
+ * @version $Id: PerforceChangeLogConsumerTest.java 331276 2005-11-07 15:04:54Z
+ *          evenisse $
+ */
+public class PerforceUnEditConsumerTest
+    extends ScmTestCase
+{
+    public void testGoodParse()
+        throws Exception
+    {
+        File testFile = getTestFile( "src/test/resources/perforce/unedit_good.txt" );
+
+        PerforceUnEditConsumer consumer = new PerforceUnEditConsumer();
+
+        FileInputStream fis = new FileInputStream( testFile );
+        BufferedReader in = new BufferedReader( new InputStreamReader( fis ) );
+        String s = in.readLine();
+        while ( s != null )
+        {
+            consumer.consumeLine( s );
+            s = in.readLine();
+        }
+
+        assertTrue( consumer.isSuccess() );
+        List edits = consumer.getEdits();
+        assertEquals( "Wrong number of entries returned", 2, edits.size() );
+        String entry = (String) edits.get( 0 );
+        assertTrue( entry.startsWith( "//" ) );
+        assertTrue( entry.endsWith( ".classpath" ) );
+    }
+
+    public void testBadParse()
+        throws Exception
+    {
+        File testFile = getTestFile( "src/test/resources/perforce/unedit_bad.txt" );
+
+        PerforceUnEditConsumer consumer = new PerforceUnEditConsumer();
+
+        FileInputStream fis = new FileInputStream( testFile );
+        BufferedReader in = new BufferedReader( new InputStreamReader( fis ) );
+        String s = in.readLine();
+        while ( s != null )
+        {
+            consumer.consumeLine( s );
+            s = in.readLine();
+        }
+
+        assertFalse( consumer.isSuccess() );
+        assertEquals( 96, consumer.getOutput().length() );
+    }
+}

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/unedit/PerforceUnEditConsumerTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/java/org/apache/maven/scm/provider/perforce/command/unedit/PerforceUnEditConsumerTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/addlog.txt
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/addlog.txt?rev=349435&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/addlog.txt (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/addlog.txt Mon Nov 28 09:01:05 2005
@@ -0,0 +1,2 @@
+//depot/something/foo.xml#1 - opened for add
+//depot/something/bar.xml#1 - opened for add
\ No newline at end of file

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/addlog.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/addlog.txt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/checkin_bad.txt
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/checkin_bad.txt?rev=349435&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/checkin_bad.txt (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/checkin_bad.txt Mon Nov 28 09:01:05 2005
@@ -0,0 +1,8 @@
+Change 80837 created with 1 open file(s).
+Submitting change 80837.
+Locking 1 files ...
+edit //depot/modules/cordoba/runtime-ear/Foo.java#2
+Submit validation failed -- fix problems then use 'p4 submit -c 80837'.
+'checkstyle' validation failed:
+
+depot/modules/cordoba/runtime-ear/Foo.java:3:1: Got an exception - expecting EOF, found '}'

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/checkin_bad.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/checkin_bad.txt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/checkin_good.txt
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/checkin_good.txt?rev=349435&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/checkin_good.txt (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/checkin_good.txt Mon Nov 28 09:01:05 2005
@@ -0,0 +1,5 @@
+Change 80835 created with 1 open file(s).
+Submitting change 80835.
+Locking 1 files ...
+add //depot/modules/cordoba/runtime-ear/foo.xml#1
+Change 80835 submitted.

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/checkin_good.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/checkin_good.txt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/checkout_bad.txt
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/checkout_bad.txt?rev=349435&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/checkout_bad.txt (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/checkout_bad.txt Mon Nov 28 09:01:05 2005
@@ -0,0 +1 @@
+ Invalid changelist/client/label/date '@somelabel'.

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/checkout_bad.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/checkout_bad.txt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/checkout_good.txt
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/checkout_good.txt?rev=349435&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/checkout_good.txt (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/checkout_good.txt Mon Nov 28 09:01:05 2005
@@ -0,0 +1,4 @@
+//depot/modules/cordoba/runtime-ear/.j2ee#1 - deleted as d:\perforce\depot\modules\cordoba\runtime-ear\.j2ee
+//depot/modules/cordoba/runtime-ear/.project#1 - deleted as d:\perforce\depot\modules\cordoba\runtime-ear\.project
+//depot/modules/cordoba/runtime-ear/.runtime#1 - deleted as d:\perforce\depot\modules\cordoba\runtime-ear\.runtime
+//depot/modules/cordoba/runtime-ear/Foo.java#1 - deleted as d:\perforce\depot\modules\cordoba\runtime-ear\Foo.java

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/checkout_good.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/checkout_good.txt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/difflog.txt
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/difflog.txt?rev=349435&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/difflog.txt (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/difflog.txt Mon Nov 28 09:01:05 2005
@@ -0,0 +1,323 @@
+--- //depot/modules/cordoba/storage/modelstore/src/main/java/com/webify/framework/model/IThing.java	2005/11/14 14:35:48
++++ //depot/modules/cordoba/storage/modelstore/src/main/java/com/webify/framework/model/IThing.java	2005/11/22 07:28:55
+@@ -1,10 +1,7 @@
+ package com.webify.framework.model;
+ 
+-import com.webify.framework.model.metadata.ClassInfo;
+ import com.webify.framework.model.metadata.InterfaceInfo;
+-
+-import java.net.URI;
+-import java.util.Set;
++import com.webify.wsf.modelstore.IPersisted;
+ 
+ /**
+  * Base interface for all model types in WSF.  Corresponds to owl:Thing.
+@@ -15,52 +12,14 @@
+  * @version $Id$
+  * @since 2.0.0
+  */
+-public interface IThing {
++public interface IThing extends IPersisted {
+ 
+     /**
+      * @deprecated Should not rely on, or hardcode 3.4 base namespace in code.
+      */
+     String NS_BASE_CATALOG = "http://www.webifysolutions.com/2005/06/base-catalog#";
+-    
+-    /**
+-     * @param name the property <em>URI</em> in string form.
+-     * @deprecated use {@link #getProperty(URI)} instead.
+-     */
+-    Object getProperty(String name);
+-
+-    Object getProperty(URI name);
+-
+-    /**
+-     * @param name the property <em>URI</em> in string form.
+-     * @deprecated use {@link #setProperty(URI, Object)} instead.
+-     */
+-    void setProperty(String name, Object value);
+-
+-    void setProperty(URI name, Object value);
+-
+-    /**
+-     * @param name the property <em>URI</em> in string form.
+-     * @deprecated use {@link #removeProperty(URI, Object)} instead.
+-     */
+-    void removeProperty(String name, Object value);
+-
+-    void removeProperty(URI name, Object value);
+-
+-    /**
+-     * @param name the property <em>URI</em> in string form.
+-     * @return true if <code>value</code> is associated with the specified property
+-     * @deprecated use {@link #hasProperty(URI, Object)} instead.
+-     */
+-    boolean hasProperty(String name, Object value);
+ 
+-    boolean hasProperty(URI name, Object value);
+-
+     /**
+-     * @return a (non-null, possibly empty) set of URIs corresponding to property names.
+-     */
+-    Set propertyNameSet();
+-
+-    /**
+      * @OntProperty (uri="http://www.w3.org/2000/01/rdf-schema#comment")
+      */
+     String getComment();
+@@ -91,27 +50,6 @@
+     void setVersionInfo(String versionInfo);
+ 
+     /**
+-     * @return the <em>local</em> name within {@link #getURI()}'s namespace.
+-     */
+-    String getId();
+-
+-    /**
+-     * @return the full URI for this thing, which is unique within a model.
+-     */
+-    URI getURI();
+-    
+-    /**
+-     * @return the declared type of the instance
+-     */
+-    URI getDeclaredType();
+-
+-    /**
+-     * @return a <em>locked</em> {@link ClassInfo} instance
+-     *   representing this thing's interface/declared type.
+-     */
+-    ClassInfo getClassInfo();
+-
+-    /**
+      * @return a <em>locked</em> {@link InterfaceInfo} instance
+      *   representing this thing's interface/declared type.
+      */
+--- //depot/modules/cordoba/storage/modelstore/src/main/java/com/webify/framework/model/ModelFactory.java	2005/11/21 08:58:32
++++ //depot/modules/cordoba/storage/modelstore/src/main/java/com/webify/framework/model/ModelFactory.java	2005/11/21 10:29:33
+@@ -3,8 +3,8 @@
+ import com.webify.framework.model.changes.ModelChanges;
+ import com.webify.framework.model.metadata.MetadataRegistry;
+ import com.webify.framework.support.trackingmap.MultiValueMap;
++import com.webify.framework.triples.TripleStore;
+ import com.webify.framework.triples.VersionInfo;
+-import com.webify.framework.triples.TripleStore;
+ 
+ import java.net.URI;
+ import java.util.List;
+@@ -114,12 +114,6 @@
+ 
+     MultiValueMap getAllProperties(final long version, final URI subject);
+ 
+-    /**
+-     * Attaches disconnected instances and {@link java.util.Collection}s
+-     * of {@link IThing}s. Other types of objects are ignored.
+-     */
+-    void attachDisconnected(Object disconnected);
+-
+     long getCurrentVersion();
+ 
+     VersionInfo getCurrentVersionInfo();
+--- //depot/modules/cordoba/storage/modelstore/src/main/java/com/webify/framework/model/dbstore/HibernateModelFactory.java	2005/11/21 08:58:32
++++ //depot/modules/cordoba/storage/modelstore/src/main/java/com/webify/framework/model/dbstore/HibernateModelFactory.java	2005/11/22 07:34:00
+@@ -6,7 +6,6 @@
+ import com.webify.framework.model.ModelQuery;
+ import com.webify.framework.model.NotFoundException;
+ import com.webify.framework.model.proxy.ProxyHandlerContext;
+-import com.webify.framework.support.collections.IdentitySet;
+ import com.webify.framework.support.trackingmap.TrackingMap;
+ import com.webify.framework.triples.changes.TripleChanges;
+ import com.webify.wsf.modelstore.impl.ModelAccessImpl;
+@@ -168,56 +167,6 @@
+         return version;
+     }
+ 
+-    /**
+-     * @return non-null possibly empty collection
+-     */
+-    private Collection getOtherThingsInCloud(final IThing thing) {
+-        final HibernateInvocationHandler handler = HibernateInvocationHandler.handlerForThing(thing);
+-        final Collection others = handler.getThingsInCloud();
+-        others.remove(thing);
+-        return others;
+-    }
+-
+-    /**
+-     * @param disconnected
+-     *            can be an {@link IThing}, a {@link Collection}or regular
+-     *            {@link Object}
+-     */
+-    public void attachDisconnected(Object disconnected) {
+-        HashSet things = new HashSet();
+-        findAllThingsInClouds(disconnected, new IdentitySet(), things);
+-        if (GENERAL_LOG.isDebugEnabled()) {
+-            GENERAL_LOG.debug("Reattaching: " + things);
+-        }
+-        for (Iterator i = things.iterator(); i.hasNext();) {
+-            final IThing thing = (IThing) i.next();
+-            HibernateInvocationHandler handler = HibernateInvocationHandler.handlerForThing(thing);
+-            handler.reattach(this);
+-        }
+-    }
+-
+-    private void findAllThingsInClouds(final Object disconnected,
+-                                       final Set visited,
+-                                       final Set target) {
+-        if (!visited.add(disconnected)) {
+-            // already seen this object
+-            return;
+-        }
+-
+-        if (disconnected instanceof Collection) {
+-            final Collection collection = (Collection) disconnected;
+-            for (Iterator i = collection.iterator(); i.hasNext();) {
+-                findAllThingsInClouds(i.next(), visited, target);
+-            }
+-        }
+-        else if (disconnected instanceof IThing) {
+-            final IThing thing = (IThing) disconnected;
+-            // no need to recurse into each because they all have the same cloud
+-            target.add(thing);
+-            target.addAll(getOtherThingsInCloud(thing));
+-        }
+-    }
+-
+     long getWorkingVersion() {
+         // TODO implement getWorkingVersion properly.
+         return ModelFactory.CURRENT_VERSION;
+@@ -250,7 +199,7 @@
+         final HibernateProxyBuilder builder = new HibernateProxyBuilder();
+         builder.setContext(this);
+         if (typeUri == null) {
+-            final TypeComputation tc = new TypeComputation(this, iface, properties);
++            final TypeComputation tc = new TypeComputation(this.getMetadataRegistry(), iface, properties);
+             builder.setInterface(tc.deriveInterface());
+             builder.setTypeUri(tc.deriveType());
+         }
+--- //depot/modules/cordoba/storage/modelstore/src/main/java/com/webify/framework/model/dbstore/TypeComputation.java	2005/11/21 08:58:32
++++ //depot/modules/cordoba/storage/modelstore/src/main/java/com/webify/framework/model/dbstore/TypeComputation.java	2005/11/22 07:34:00
+@@ -4,7 +4,7 @@
+ import com.webify.framework.model.IThing;
+ import com.webify.framework.model.PredicateConstants;
+ import com.webify.framework.model.metadata.ClassInfo;
+-import com.webify.framework.model.proxy.ProxyHandlerContext;
++import com.webify.framework.model.metadata.MetadataRegistry;
+ import com.webify.framework.support.trackingmap.TrackingMap;
+ import org.apache.commons.logging.Log;
+ import org.apache.commons.logging.LogFactory;
+@@ -21,7 +21,7 @@
+  * @author dranatunga
+  * @version $Id$
+  */
+-class TypeComputation {
++public class TypeComputation {
+ 
+     private static final int NONE = 0;
+ 
+@@ -44,28 +44,28 @@
+ 
+     private int _ifaceState = NONE;
+     private int _typeState = NONE;
+-    private final ProxyHandlerContext _context;
++    private final MetadataRegistry _registry;
+     private final Class _ifaceIn;
+     private Class _bestIface;
+     private URI _bestType;
+     private final TrackingMap _knowledge;
+ 
+-    TypeComputation(ProxyHandlerContext context, Class ifaceIn, TrackingMap knowledge) {
++    public TypeComputation(MetadataRegistry registry, Class ifaceIn, TrackingMap knowledge) {
+         // TODO an instance can have more than one type, we need to account for this in our API
+-        _context = context;
++        _registry = registry;
+         _ifaceIn = ifaceIn;
+         _knowledge = knowledge;
+         _bestIface = ifaceIn;
+     }
+ 
+-    Class deriveInterface() {
++    public Class deriveInterface() {
+         determineUsingInstanceAssociation();
+         // TODO determineUsingClassAssocation
+         determineUsingTypeNameGuessing();
+         return _bestIface;
+     }
+ 
+-    URI deriveType() {
++    public URI deriveType() {
+         determineUsingInstanceType();
+         determineUsingMetadataInfo();
+         return _bestType;
+@@ -141,7 +141,7 @@
+         ClassInfo mostSpecificType = null;
+         for (Iterator i = _knowledge.getAll(PredicateConstants.TYPE_OF).iterator(); i.hasNext();) {
+             URI oneDeclaredType = (URI) i.next();
+-            ClassInfo oneDeclaredInfo = _context.getMetadataRegistry().getClassInfo(oneDeclaredType);
++            ClassInfo oneDeclaredInfo = _registry.getClassInfo(oneDeclaredType);
+             if ((mostSpecificType == null) || oneDeclaredInfo.getSuperClasses().contains(mostSpecificType)) {
+                 mostSpecificType = oneDeclaredInfo;
+             }
+@@ -163,7 +163,7 @@
+         if (_typeState >= FOUND_FROM_ANNOTATION) {
+             return;
+         }
+-        final ClassInfo classInfo = _context.getMetadataRegistry().getInterfaceInfo(_ifaceIn).getTypeInfo();
++        final ClassInfo classInfo = _registry.getInterfaceInfo(_ifaceIn).getTypeInfo();
+         if ((classInfo == null) || (classInfo.getTypeUri() == null)) {
+             return;
+         }
+--- //depot/modules/cordoba/storage/modelstore/src/test/java/com/webify/framework/model/kowari/KowariModelFactoryTest.java	2005/11/14 14:53:49
++++ //depot/modules/cordoba/storage/modelstore/src/test/java/com/webify/framework/model/kowari/KowariModelFactoryTest.java	2005/11/21 10:29:33
+@@ -1,23 +1,22 @@
+ package com.webify.framework.model.kowari;
+ 
++import java.net.URI;
+ import java.util.Date;
+ import java.util.HashSet;
+ import java.util.Iterator;
+ import java.util.List;
+ import java.util.Set;
+-import java.net.URI;
+ 
+ import com.webify.framework.model.IThing;
+ import com.webify.framework.model.ModelFactory;
+ import com.webify.framework.model.ModelQuery;
+ import com.webify.framework.model.metadata.InterfaceInfo;
+ import com.webify.framework.model.metadata.PropertyInfo;
++import com.webify.framework.support.uri.URIs;
+ import com.webify.framework.support.uuid.UUID;
+-import com.webify.framework.support.uri.URIs;
++import com.webify.framework.test.ConfiguredCoreTest;
++import com.webify.framework.test.ModelExistsCondition;
+ import com.webify.framework.test.PreTestCondition;
+-import com.webify.framework.test.ModelExistsCondition;
+-import com.webify.framework.test.ConfiguredCoreTest;
+-
+ import junit.framework.TestSuite;
+ 
+ /**
+@@ -52,7 +51,6 @@
+         ts.addTest(new KowariModelFactoryTest("testModifyKnownSubject"));
+         ts.addTest(new KowariModelFactoryTest("testListExisting"));
+         ts.addTest(new KowariModelFactoryTest("testListLiterals"));
+-        ts.addTest(new KowariModelFactoryTest("testSerializeThing"));
+         ts.addTest(new KowariModelFactoryTest("testMetadataAccessFromThing"));
+         return ts;
+     }
+@@ -112,15 +110,6 @@
+     }
+ 
+ 
+-    public void testSerializeThing() {
+-        final IThing original = getModelFactory().load(IThing.class, EXISTING_THING);
+-        final byte[] serialized = serialize(original);
+-        final Object reloaded = deserialize(serialized);
+-        assertEquals(original, reloaded);
+-        // TODO lookup something off reloaded that would require it to be connected.
+-        getModelFactory().attachDisconnected(reloaded);
+-    }
+-
+     public void testMetadataAccessFromThing() {
+         final IThing created = getModelFactory().create(SampleCar.class, new UUID().toString());
+         final InterfaceInfo info = created.getInterfaceInfo();

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/difflog.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/difflog.txt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/editlog.txt
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/editlog.txt?rev=349435&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/editlog.txt (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/editlog.txt Mon Nov 28 09:01:05 2005
@@ -0,0 +1,4 @@
+//depot/modules/cordoba/storage/triplestore-spi/.classpath#7 - opened for edit
+... //depot/modules/cordoba/storage/triplestore-spi/.classpath - also opened by arichardson@corkdog-wsf
+//depot/modules/cordoba/storage/triplestore-spi/.project#5 - opened for edit
+... //depot/modules/cordoba/storage/triplestore-spi/.project - also opened by arichardson@corkdog-wsf
\ No newline at end of file

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/editlog.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/editlog.txt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/login_bad.txt
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/login_bad.txt?rev=349435&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/login_bad.txt (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/login_bad.txt Mon Nov 28 09:01:05 2005
@@ -0,0 +1,2 @@
+Enter password:
+Password invalid.
\ No newline at end of file

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/login_bad.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/login_bad.txt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/login_good.txt
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/login_good.txt?rev=349435&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/login_good.txt (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/login_good.txt Mon Nov 28 09:01:05 2005
@@ -0,0 +1,2 @@
+Enter password:
+User mperham logged in.
\ No newline at end of file

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/login_good.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/login_good.txt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/removelog.txt
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/removelog.txt?rev=349435&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/removelog.txt (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/removelog.txt Mon Nov 28 09:01:05 2005
@@ -0,0 +1,3 @@
+//depot/something/foo.xml#1 - opened for delete
+//depot/something/bar.xml#123 - opened for delete
+... //depot/something/bar.xml#123 - also opened by foobar@foomachine
\ No newline at end of file

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/removelog.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/removelog.txt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/status_good.txt
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/status_good.txt?rev=349435&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/status_good.txt (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/status_good.txt Mon Nov 28 09:01:05 2005
@@ -0,0 +1,4 @@
+//depot/sandbox/mperham/scm-test/Foo.java#1 - add default change (text)
+//depot/sandbox/mperham/scm-test/bar/Bar.xml#1 - add default change (text)
+//depot/sandbox/mperham/scm-test/bar/foo.xml#1 - edit default change (text)
+//depot/sandbox/mperham/scm-test/bar/hello.xml#1 - delete default change (text)
\ No newline at end of file

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/status_good.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/status_good.txt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/tag_bad.txt
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/tag_bad.txt?rev=349435&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/tag_bad.txt (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/tag_bad.txt Mon Nov 28 09:01:05 2005
@@ -0,0 +1,2 @@
+Label maven-scm-test saved.
+Label 'maven-scm-tes' unknown - use 'label' command to create it.

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/tag_bad.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/tag_bad.txt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/tag_good.txt
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/tag_good.txt?rev=349435&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/tag_good.txt (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/tag_good.txt Mon Nov 28 09:01:05 2005
@@ -0,0 +1,3 @@
+Label maven-scm-test saved.
+//depot/modules/cordoba/runtime-ear/pom.xml#4 - added
+//depot/modules/cordoba/runtime-ear/.runtime#1 - added
\ No newline at end of file

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/tag_good.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/tag_good.txt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/unedit_bad.txt
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/unedit_bad.txt?rev=349435&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/unedit_bad.txt (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/unedit_bad.txt Mon Nov 28 09:01:05 2005
@@ -0,0 +1,2 @@
+.classpath - file(s) not opened on this client.
+.project - file(s) not opened on this client.
\ No newline at end of file

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/unedit_bad.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/unedit_bad.txt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/unedit_good.txt
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/unedit_good.txt?rev=349435&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/unedit_good.txt (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/unedit_good.txt Mon Nov 28 09:01:05 2005
@@ -0,0 +1,2 @@
+//depot/modules/cordoba/storage/triplestore-spi/.classpath#7 - was edit, reverted
+//depot/modules/cordoba/storage/triplestore-spi/.project#5 - was edit, reverted
\ No newline at end of file

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/unedit_good.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-perforce/src/test/resources/perforce/unedit_good.txt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"