예제 #1
0
  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;
  }
예제 #2
0
 @Nullable
 private static <S> ArtifactPropertiesState serializeProperties(
     ArtifactPropertiesProvider provider, ArtifactProperties<S> properties) {
   final ArtifactPropertiesState state = new ArtifactPropertiesState();
   state.setId(provider.getId());
   final Element options = new Element("options");
   XmlSerializer.serializeInto(
       properties.getState(), options, new SkipDefaultValuesSerializationFilters());
   if (options.getContent().isEmpty() && options.getAttributes().isEmpty()) return null;
   state.setOptions(options);
   return state;
 }
예제 #3
0
 private static <S> void deserializeProperties(
     ArtifactProperties<S> artifactProperties, ArtifactPropertiesState propertiesState) {
   final Element options = propertiesState.getOptions();
   if (artifactProperties == null || options == null) {
     return;
   }
   final S state = artifactProperties.getState();
   if (state != null) {
     XmlSerializer.deserializeInto(state, options);
     artifactProperties.loadState(state);
   }
 }