@Test
  public void testSaveAs_RecoverFromSaveError() throws Exception {

    FileProjectSaver saver =
        new FileProjectSaver() {

          @Override
          void saveToTempFile(SaveUnit unit, PrintWriter printWriter) {
            throw new CayenneRuntimeException("Test Exception");
          }
        };

    Module testModule =
        new Module() {

          @Override
          public void configure(Binder binder) {
            binder.bind(ClassLoaderManager.class).to(DefaultClassLoaderManager.class);
            binder.bind(AdhocObjectFactory.class).to(DefaultAdhocObjectFactory.class);
            binder.bind(DataMapLoader.class).to(XMLDataMapLoader.class);
            binder.bind(DataChannelDescriptorLoader.class).to(XMLDataChannelDescriptorLoader.class);
            binder.bind(ProjectLoader.class).to(DataChannelProjectLoader.class);
            binder.bind(ConfigurationNameMapper.class).to(DefaultConfigurationNameMapper.class);
          }
        };

    Injector injector = DIBootstrap.createInjector(testModule);
    injector.injectMembers(saver);

    String testConfigName = "PROJECT2";
    String baseUrl = getClass().getPackage().getName().replace('.', '/');
    URL url =
        getClass().getClassLoader().getResource(baseUrl + "/cayenne-" + testConfigName + ".xml");

    Resource source = new URLResource(url);
    Project project = injector.getInstance(ProjectLoader.class).loadProject(source);

    File outFile = setupTestDirectory("testSaveAs_RecoverFromSaveError");
    assertEquals(0, outFile.list().length);

    try {
      saver.saveAs(project, new URLResource(outFile.toURL()));
      fail("No exception was thrown..");
    } catch (CayenneRuntimeException e) {
      // expected

      assertEquals(0, outFile.list().length);
    }
  }
  @Test
  public void testSaveAs() throws Exception {

    FileProjectSaver saver = new FileProjectSaver();

    Module testModule =
        new Module() {

          @Override
          public void configure(Binder binder) {
            binder.bind(ClassLoaderManager.class).to(DefaultClassLoaderManager.class);
            binder.bind(AdhocObjectFactory.class).to(DefaultAdhocObjectFactory.class);

            binder.bind(DataMapLoader.class).to(XMLDataMapLoader.class);
            binder.bind(DataChannelDescriptorLoader.class).to(XMLDataChannelDescriptorLoader.class);
            binder.bind(ProjectLoader.class).to(DataChannelProjectLoader.class);
            binder.bind(ConfigurationNameMapper.class).to(DefaultConfigurationNameMapper.class);
          }
        };

    Injector injector = DIBootstrap.createInjector(testModule);
    injector.injectMembers(saver);

    String testConfigName = "PROJECT2";
    String baseUrl = getClass().getPackage().getName().replace('.', '/');
    URL url =
        getClass().getClassLoader().getResource(baseUrl + "/cayenne-" + testConfigName + ".xml");

    Resource source = new URLResource(url);
    Project project = injector.getInstance(ProjectLoader.class).loadProject(source);

    File outFile = setupTestDirectory("testSave");

    saver.saveAs(project, new URLResource(outFile.toURL()));

    File rootFile = new File(outFile, "cayenne-PROJECT2.xml");
    assertTrue(rootFile.exists());
    assertTrue(rootFile.length() > 0);

    File map1File = new File(outFile, "testProjectMap2_1.map.xml");
    assertTrue(map1File.exists());
    assertTrue(map1File.length() > 0);

    File map2File = new File(outFile, "testProjectMap2_2.map.xml");
    assertTrue(map2File.exists());
    assertTrue(map2File.length() > 0);
  }
Ejemplo n.º 3
0
 @Override
 public UpgradeHandler getUpgradeHandler(Resource projectSource) {
   UpgradeHandler_V8 handler = new UpgradeHandler_V8(projectSource);
   injector.injectMembers(handler);
   return handler;
 }