Don’t use Serializable mixin in Project

This commit is contained in:
Nathan Sobo
2015-09-22 10:50:11 -06:00
parent 17b4725b44
commit d997c80d31
2 changed files with 20 additions and 20 deletions

View File

@@ -66,7 +66,7 @@ describe "Project", ->
runs ->
expect(atom.project.getBuffers().length).toBe 1
deserializedProject = atom.project.testSerialization()
deserializedProject = Project.deserialize(atom.project.serialize())
expect(deserializedProject.getBuffers().length).toBe 0
it "listens for destroyed events on deserialized buffers and removes them when they are destroyed", ->
@@ -75,7 +75,7 @@ describe "Project", ->
runs ->
expect(atom.project.getBuffers().length).toBe 1
deserializedProject = atom.project.testSerialization()
deserializedProject = Project.deserialize(atom.project.serialize())
expect(deserializedProject.getBuffers().length).toBe 1
deserializedProject.getBuffers()[0].destroy()
@@ -91,7 +91,7 @@ describe "Project", ->
runs ->
expect(atom.project.getBuffers().length).toBe 1
fs.mkdirSync(pathToOpen)
deserializedProject = atom.project.testSerialization()
deserializedProject = Project.deserialize(atom.project.serialize())
expect(deserializedProject.getBuffers().length).toBe 0
it "does not deserialize buffers when their path is inaccessible", ->
@@ -104,7 +104,7 @@ describe "Project", ->
runs ->
expect(atom.project.getBuffers().length).toBe 1
fs.chmodSync(pathToOpen, '000')
deserializedProject = atom.project.testSerialization()
deserializedProject = Project.deserialize(atom.project.serialize())
expect(deserializedProject.getBuffers().length).toBe 0
describe "when an editor is saved and the project has no path", ->

View File

@@ -4,7 +4,6 @@ url = require 'url'
_ = require 'underscore-plus'
fs = require 'fs-plus'
{Emitter} = require 'event-kit'
Serializable = require 'serializable'
TextBuffer = require 'text-buffer'
DefaultDirectoryProvider = require './default-directory-provider'
@@ -19,12 +18,25 @@ GitRepositoryProvider = require './git-repository-provider'
module.exports =
class Project extends Model
atom.deserializers.add(this)
Serializable.includeInto(this)
###
Section: Construction and Destruction
###
@deserialize: (state) ->
state.buffers = _.compact state.buffers.map (bufferState) ->
# Check that buffer's file path is accessible
return if fs.isDirectorySync(bufferState.filePath)
if bufferState.filePath
try
fs.closeSync(fs.openSync(bufferState.filePath, 'r'))
catch error
return unless error.code is 'ENOENT'
atom.deserializers.deserialize(bufferState)
new this(state)
constructor: ({path, paths, @buffers}={}) ->
@emitter = new Emitter
@buffers ?= []
@@ -75,23 +87,11 @@ class Project extends Model
Section: Serialization
###
serializeParams: ->
serialize: ->
deserializer: 'Project'
paths: @getPaths()
buffers: _.compact(@buffers.map (buffer) -> buffer.serialize() if buffer.isRetained())
deserializeParams: (params) ->
params.buffers = _.compact params.buffers.map (bufferState) ->
# Check that buffer's file path is accessible
return if fs.isDirectorySync(bufferState.filePath)
if bufferState.filePath
try
fs.closeSync(fs.openSync(bufferState.filePath, 'r'))
catch error
return unless error.code is 'ENOENT'
atom.deserializers.deserialize(bufferState)
params
###
Section: Event Subscription
###