private ArtifactImpl loadArtifact(ArtifactState state) { ArtifactType type = ArtifactType.findById(state.getArtifactType()); if (type == null) { return createInvalidArtifact(state, "Unknown artifact type: " + state.getArtifactType()); } final Element element = state.getRootElement(); final String artifactName = state.getName(); final CompositePackagingElement<?> rootElement; if (element != null) { try { rootElement = (CompositePackagingElement<?>) deserializeElement(element); } catch (UnknownPackagingElementTypeException e) { return createInvalidArtifact(state, "Unknown element: " + e.getTypeId()); } } else { rootElement = type.createRootElement(artifactName); } final ArtifactImpl artifact = new ArtifactImpl( artifactName, type, state.isBuildOnMake(), rootElement, state.getOutputPath()); final List<ArtifactPropertiesState> propertiesList = state.getPropertiesList(); for (ArtifactPropertiesState propertiesState : propertiesList) { final ArtifactPropertiesProvider provider = ArtifactPropertiesProvider.findById(propertiesState.getId()); if (provider != null) { deserializeProperties(artifact.getProperties(provider), propertiesState); } else { return createInvalidArtifact( state, "Unknown artifact properties: " + propertiesState.getId()); } } return artifact; }
private InvalidArtifact createInvalidArtifact(ArtifactState state, String errorMessage) { final InvalidArtifact artifact = new InvalidArtifact(state, errorMessage); ProjectLoadingErrorsNotifier.getInstance(myProject) .registerError(new ArtifactLoadingErrorDescription(myProject, artifact)); UnknownFeaturesCollector.getInstance(myProject) .registerUnknownFeature( "com.intellij.packaging.artifacts.ArtifactType", state.getArtifactType()); return artifact; }